ccc

Symfony: Formularios con campos entity

En el controller:
public function formAddPeliculaAction()
    {
        $request  = $this->getRequest();
        $peliculaAux = new peliculas();
       
        $form = $this->createFormBuilder($peliculaAux)
            ->add('titulo', 'text',array(
                   'attr' => array('style' => 'width: 400px')
                ))
            ->add('anno', 'integer')
            ->add('idDirector', 'entity', array(
                    'class' => 'edcpeliculasBundle:cineastas',
                    'property' => 'nombre'
            ))
           
            ->add('idActor1', 'entity', array(
                    'class' => 'edcpeliculasBundle:cineastas',
                    'property' => 'nombre'
            ))
            ->add('idActor2', 'entity', array(
                    'class' => 'edcpeliculasBundle:cineastas',
                    'property' => 'nombre'
            ))
            ->add('Guardar película', 'submit')
        ->getForm();
       
        $form->handleRequest($request);
       
        // por aquí solo entra cuando ya se ha dado el submit
        if ($form->isValid()) {
            // En $peliculaAux ya están los valores de los campos normales, en cambio
            // los de tipo combo hay que rescatarlos y meterlos en peliculasAux
            // antes de hacer el flush
               $idDirector = $this->get('request')->request->get('form')["idDirector"];
             $idActor1 = $this->get('request')->request->get('form')["idActor1"];
             $idActor2 = $this->get('request')->request->get('form')["idActor2"];
                         
             $peliculaAux->setIdDirector($idDirector);
             $peliculaAux->setIdActor1($idActor1);
             $peliculaAux->setIdActor2($idActor2);
                        
             // Meterlo en la base de datos
            $em = $this->getDoctrine()->getManager();
            $em->persist($peliculaAux);
             $em->flush(); // lo mete en la BD
              return $this->redirect($this->generateUrl('edcpeliculas_listarPeliculas'));
        }
        return $this->render("edcpeliculasBundle:Default:formAddPelicula.html.twig",
                array("formAux"=>$form->createView()));
   
    }

No hay comentarios:

Publicar un comentario