Ver Mensaje Individual
  #8 (permalink)  
Antiguo 22/10/2012, 13:00
Victoor
 
Fecha de Ingreso: agosto-2007
Mensajes: 14
Antigüedad: 17 años
Puntos: 0
Respuesta: Problema con formulario y clave foranea

Aqui os dejo el código. El $opinion->setArticulo($articulo); he probado a ponerlo también justo después del new Opinion(); y también me da error. El $articulo contiene un objeto articulo 100% seguro ya que lo muestro por pantalla mientras se comenta.

La variable $articulo_id la obtengo por la URL.

Código PHP:
Ver original
  1. $em = $this->getDoctrine()->getEntityManager();
  2.        
  3.         // Articulo Actual
  4.         $articulo  = $em->getRepository('ArticuloBundle:Articulo')->findOneById($articulo_id);
  5.         $marca = $articulo->getMarcaId(); // Obtenemos los datos de la marca
  6.         // Usuario actual
  7.         $usuario = $this->get('security.context')->getToken()->getUser();
  8.  
  9.         $opinion = new Opinion();
  10.  
  11.         $form = $this->createFormBuilder($opinion)
  12.                 ->add('opinion', 'textarea',array('label' => 'Opinión extensa sobre el producto'))
  13.                 ->add('sabor', 'integer')
  14.                 ->add('calidadprecio', 'integer',array('label' => 'Calidad/Precio'))
  15.                 ->add('efectividad', 'integer')
  16.                 ->add('probado', 'choice' ,array(
  17.                         'choices' => array('0' => 'No', '1' => 'Si'),
  18.                         'required' => true,
  19.                         'label' => '¿Has probado el producto?'
  20.                     ))
  21.                 ->add('pros', 'entity', array(
  22.                         'expanded' => false,
  23.                         'class' => 'OpinionesBundle:Pros',
  24.                         'query_builder' => function(EntityRepository $er) {
  25.                             return $er->createQueryBuilder('pc')
  26.                                    ->orderBy('pc.descripcion', 'ASC');
  27.                         },
  28.                         'multiple' => true,
  29.                         'property' => 'descripcion',
  30.                         'label' => 'Beneficios'
  31.                     ))
  32.                 ->add('contras', 'entity', array(
  33.                         'expanded' => false,
  34.                         'class' => 'OpinionesBundle:Contras',
  35.                         'query_builder' => function(EntityRepository $er) {
  36.                             return $er->createQueryBuilder('pc')
  37.                                    ->orderBy('pc.descripcion', 'ASC');
  38.                         },
  39.                         'multiple' => true,
  40.                         'property' => 'descripcion',
  41.                         'label' => 'Contras'
  42.                     ))
  43.                 ->getForm();
  44.  
  45.         if ($request->getMethod() == 'POST') {
  46.             $form->bindRequest($request);
  47.  
  48.             if($form->isValid()) {
  49.  
  50.                 $opinion->setArticulo($articulo);
  51.  
  52.                 $em->persist($opinion);
  53.                 $em->flush();
  54.  
  55.                 return $this->redirect($this->generateUrl('portada'));
  56.  
  57.             } else {
  58.                 // Formulario no valido
  59.             }
  60.         }

Gracias por vuestra ayuda a ver si conseguimos resolver esto. :)