Foros del Web » Programando para Internet » PHP » Symfony »

Rescatar valores entity de un form

Estas en el tema de Rescatar valores entity de un form en el foro de Symfony en Foros del Web. Hola a todos, me estoy iniciando con Symfony y por el momento me va saliendo todo, pero tengo un problema a la hora de rescatar ...
  #1 (permalink)  
Antiguo 23/09/2015, 10:19
 
Fecha de Ingreso: junio-2007
Mensajes: 298
Antigüedad: 17 años, 5 meses
Puntos: 5
Rescatar valores entity de un form

Hola a todos, me estoy iniciando con Symfony y por el momento me va saliendo todo, pero tengo un problema a la hora de rescatar los valores del formulario antes de hacer flush. Si los valores son normales (string, integer, etc) me hace el flush perfectamente y me lo mete en la BD.

El problema es cuando uno de los campos es de tipo entity que como lo que recibe es un objeto da error al hacer el flush.

Mi estructura sería así en el buildForm:
Código PHP:
$builder
            
->add('titulo')
            ->
add('anno')
            ->
add('idDirector''entity', array(
                
'class' => 'edcBundle:cineastas',
                
'query_builder' => function (EntityRepository $er) {
                                        return 
$er->createQueryBuilder('c')
                                      ->
orderBy('c.nombre''ASC');
                    }))
            ->
add('idActor1''entity', array(
                
'class' => 'edcBundle:cineastas',
                
'query_builder' => function (EntityRepository $er) {
                                        return 
$er->createQueryBuilder('c')
                                        ->
orderBy('c.nombre''ASC');
                    }))
            ->
add('idActor2''entity', array(
                
'class' => 'edcBundle:cineastas',
                
'query_builder' => function (EntityRepository $er) {
                                        return 
$er->createQueryBuilder('c')
                                        ->
orderBy('c.nombre''ASC');
                    }))
            ->
add('guardar''submit')
        ; 
Es decir, saca los datos de otra tabla (cineastas) que tiene los campos id y nombre. La view me la hace perfecta dibujando los combos con los datos el problema es a la hora de dar al botón del submit y meterlo en la BD. Este es mi código en el controller:
Código PHP:
public function addPeliculaAction(Request $request)
    {
         
$peliculaAux = new peliculas();
        
$form $this->createForm(new peliculasType(),$peliculaAux);
        
$form->handleRequest($request);
   
        if(
$form->isValid()) {
            
$em $this->getDoctrine()->getManager();
            
$em->persist($peliculaAux);
            
// AQUI DA EL ERROR
              
$em->flush();
            
$this->get('session')->getFlashBag()->add(
                    
'mensaje','Se ha añadido la película correctamente'
            
);
            return 
$this->redirect($this->generateUrl('listarPeliculas'));
        }
        
        return 
$this->render('edcBundle:Default:addPelicula.html.twig',
                array(
"form"=>$form->createView()));
    } 
Al hacer un print_r de peliculaAux veo q el campo idDirector es un objeto con dos campos (id y nombre) por lo que se me ocurrió hacer:
$id = peliculaAux->getIdDirector()
el cual incomprensiblemente me da el nombre, no el id, por lo que algo estaré haciendo mal.

¿Alguna idea? ¿Cómo rescato el id de ese combo del formulario?

Muchas gracias

------------------------------------

EDITO: Ya lo arregle, era una chorrada, solo había que modificar en cineastas.php la función:

public function __toString()
{
return $this->id;
}

public function __toString()
{
return (string)$this->id;
}

Ahora ya sí que me devuelve el id.

Última edición por schattenburg; 23/09/2015 a las 10:54 Razón: Lo he solucionado ya

Etiquetas: entity, form
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:16.