entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

¿Como actualizar desde formulario embebido Symfony 2.7?

Hola cordial saludo a todos, espero por favor me puedan ayudar con el siguiente problema:

Al momento de editar un formulario con campos embebidos, solo se actualizan los datos de Form principal, mas no los otros campos embebidos que añado.
Me explico: tengo los siguientes Formularios

  1. CpuType:dentro del cual agrego, Discos, Memorias, U.opticas, T.de red
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('nse')
            ->add('nom')
            ->add('fab')
            ->add('sepro')
            ->add('nopro')
            ->add('nupro')
            ->add('lopro')
            ->add('vepro')        
            ->add('fapro')
            ->add('arpro','choice', array(
                'label' => 'Arquitectura',
                'choices'  => array(
                    'x86' => 'x86',
                    'x64' => 'x64',
                )))
            ->add('rol')
            ->add('seccion')
            ->add('funcionando','choice', array(
                'label' => 'En funcionamiento?',
                'choices'  => array(
                    'SI' => 'SI',
                    'NO' => 'NO',
                )))
            ->add('discos', 'collection', array(
                    'type'         => new DiscoType(),
                    'label' => 'Discos Duros',
                    'allow_add' => true,
                    'allow_delete' => true,
                    'prototype' => true,
                    'by_reference' => false,
    //                    'attr' => array(
    //                        'class'=>'control-label'
    //                    )
                ))
            ->add('memorias', 'collection', array(
                    'type'         => new MemoriaType(),
                    'label' => 'RAM',
                    'allow_add' => true,
                    'allow_delete' => true,
                    'prototype' => true,
                    'by_reference' => false,                    
                ))
            ->add('tredes', 'collection', array(
                    'type'         => new TredType(),
                    'label' => 'Tarjetas de RED',
                    'allow_add' => true,
                    'allow_delete' => true,
                    'prototype' => true,
                    'by_reference' => false,                    
                ))
            ->add('uopticas', 'collection', array(
                    'type'         => new UopticaType(),
                    'label' => 'U. Optica',
                    'allow_add' => true,
                    'allow_delete' => true,
                    'prototype' => true,
                    'by_reference' => false,                    
                ))
        ;
    }
  2. DiscoType

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
    
            ->add('nse', 'text', array(
                'label' => 'S/N',
                'attr' => array(
                    'class'=>'form-control'
                ),
                'label_attr' => array(
                    'class'=>'control-label'
                )
            ))
            ->add('fab', 'text', array(
                'label' => 'Fabricante',
                'attr' => array(
                    'class'=>'form-control'
                ),
                'label_attr' => array(
                    'class'=>'control-label'
                )
            ))
            ->add('modelo', 'text', array(
                'label' => 'Modelo',
                'attr' => array(
                    'class'=>'form-control'
                ),
                'label_attr' => array(
                    'class'=>'control-label'
                )
            ))
            ->add('cap', 'text', array(
                'label' => 'Capacidad',
                'attr' => array(
                    'class'=>'form-control'
                ),
                'label_attr' => array(
                    'class'=>'control-label'
                )
            ))
        ;
    }
    • CpuController

      public function updateAction(Request $request, $id)
      {
      $em = $this->getDoctrine()->getManager();
      
      $entity = $em->getRepository('DeteccionBundle:Cpu')->find($id);
      
      if (!$entity) {
          throw $this->createNotFoundException('Unable to find Cpu entity.');
      }
      
      $deleteForm = $this->createDeleteForm($id);
      $editForm = $this->createEditForm($entity);
      $editForm->handleRequest($request);
      
      if ($editForm->isValid()) {
          $em->flush();
      
          return $this->redirect($this->generateUrl('cpu_edit', array('id' => $id)));
      }
      
      return $this->render('DeteccionBundle:Cpu:edit.html.twig', array(
          'entity'      => $entity,
          'edit_form'   => $editForm->createView(),
          'delete_form' => $deleteForm->createView(),
      ));
      }

      Al momento de editar, me guarda los datos de Cpu, y los otros campos se guardan pero sin la relación hacia Cpu. y solo pasa cuando edito, ya que cuando Agrego un nuevo Cpu todo funciona correctamente.
      enter image description here
      enter image description here

Les agradezco si me pueden dar una idea de que estaría fallando o que debería revisar

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta