Este foro ya no está activo, así que no puedes publicar nuevas preguntas ni responder a las preguntas existentes.

Varios insert con un submit

17 de octubre de 2016

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:

{‌{form_start(form, {'action':'', 'method':'POST','attr': {'class': 'form-parte','id':'formularioaenviar'} } ) }}
{‌{ form_end(form) }}
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

#2

Muchas gracias, le echo un vistazo.

@Rube101

17 octubre 2016, 18:36