Hola, mi pregunta es la siguiente, tengo un formulario con un boton submit y otro boton añadir fila que lo que hace es añadir otra fila igual a nuestro formulario, lo que quiero conseguir es que con un solo botón submit me envíe los registros que el usuario haya completado, es decir, el usuario añade todas las filas que necesite al formulario por ejemplo 10 y cuando pulse el botón submit del formulario se me inserten esos 10 registros.
Mi plantilla es la siguiente:
Obra | Operario | Día | Horas | |
---|---|---|---|---|
{{form_errors(form.obra)}} {{form_widget(form.obra,{'attr': {'full_name':'obra[]'}} )}} | {{form_errors(form.operario)}} {{form_widget(form.operario,{'attr': {'full_name':'operario[]'}})}} | {{form_errors(form.dia)}} {{form_widget(form.dia,{'attr': {'full_name':'dia[]'}})}} | {{form_errors(form.total)}} {{form_widget(form.total,{'attr': {'full_name':'total[]'}})}} |
Mi script:
$('#formularioaenviar').submit(function (ev) {
$.ajax({
type: $('#formularioaenviar').attr('method'),
url: $('#formularioaenviar').attr('action'),
data: $('#formularioaenviar').serializeArray(),
success: function (data) {
$('#formularioaenviar').each (function(){
this.reset();
});
}
});
ev.preventDefault();
});
$(function(){
$("#adicional").on('click', function(){
$("#añadir tbody tr:eq(0)").clone().removeClass('fila-fija').appendTo("#añadir");
});
});
Mi Controller, que creo que es donde está el problema:
$parte = new Parte(); $form = $this->createForm(ParteType::class, $parte);
$form->handleRequest($request); if ($form->isValid()) { $em = $this->getDoctrine()->getManager(); $operario = $parte->setOperario($form->get("operario")->getData()); $obra = $parte->setObra($form->get("obra")->getData()); $dia = $parte->setDia($form->get("dia")->getData()); $total = $parte->setTotal($form->get("total")->getData()); $em->persist($parte); $flush = $em->flush(); }
Lo intenté con bulk insert pero no lo logré, sólo se me inserta la primera fila del formulario.Espero haberme explicado bien, muchas gracias por tu tiempo.
Saludos,
Rubén.
Respuestas
Tienes que usar forms aninados:
- https://symfony.com/doc/current/form/form_collections.html
- http://gitnacho.github.io/symfony-docs-es/cookbook/form/form_collections.html
- http://showmethecode.es/php/symfony/symfony2-embeber-formularios-con-relaciones/
Saludos!
@cristian_angulo
Muchas gracias, le echo un vistazo.
@Rube101