Hola amigos, tengo la necesidad de que alguien me aclare una duda. Tengo una entidad 'Visita', con los siguientes atributos
Código:
............
class Visita
{
protected $id;
protected $venta;
protected $cliente;
protected $comentario;
............
y el formulario para insertar nuevas visitas:
Código:
....................
$builder->add('cliente', 'entity', array(
'empty_value' => '-- Seleccionar --',
'class' => 'ClienteBundle:Cliente',
'property' => 'nomComercial',
'label' => 'Cliente',
'attr' => array(
'class' => 'form-control'
)
))
->add('comentario', 'textarea', array(
'label' => 'Comentario',
'required' => false,
'attr' => array(
'placeholder' => 'Breve comentario (opcional)...',
'class' => 'form-control',
'rows' => '10',
)
))
->add('finalizar_sin', 'submit', array(
'label' => 'Finalizar sin compra',
'attr' => array(
'class' => 'btn btn-success'
)
))
->add('finalizar_con', 'submit', array(
'label' => 'Finalizar y realizar pedido',
'attr' => array(
'class' => 'btn btn-success'
)
));
}
..................
Como veis, he añadido dos botones 'submit' al formulario con el siguiente objetivo:
- el submit '
Finalizar sin compra' persiste una entidad
Visita, marcando el atributo
$venta a
FALSE. Aquí os muestro el procesamiento para este botón:
Código:
...................
$visita->setVenta(false);
$em->persist($visita);
$em->flush();
$this->addFlash('info', 'La visita ha sido cerrada sin venta');
return $this->redirectToRoute('visita_listado', array(), 301);
.....................
- el submit '
Finalizar y generar pedido' persiste una entidad
Visita, marcando el atributo
$venta a
TRUE, para crear una entidad
Pedido y hacer otras operaciones:
Código:
.....................
$visita->setVenta(true);
$em->persist($visita);
$em->flush();
$pedido = new Pedido();
.....................
La vista tiene el siguiente aspecto:
Código:
<form action="{{ path('visita_nueva') }}" method="POST">
{{ form_errors(formulario) }}
<div class="form-group">
{{ form_row(formulario.cliente) }}
</div>
<div class="form-group">
{{ form_row(formulario.comentario) }}
</div>
<div class="form-group">
{{ form_row(formulario.finalizar_sin) }}
</div>
<div class="form-group">
{{ form_row(formulario.finalizar_con) }}
</div>
{{ form_row(formulario._token) }}
</form>
El problema es que el método que procesa las visitas me queda muy farragoso y con muchas líneas de código. Me gustaría poder separar de alguna manera el procesamiento y respetar las buenas prácticas. Es decir, que un submit ejecute un 'action' y el otro submit tenga otro 'action', con dos métodos separados en el controlador.
Si alguien puede echarme un cable, le estaré muy agradecido!