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')
;
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()));
}
$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.