将$ id传递给控制器

时间:2013-08-05 07:29:20

标签: function symfony arguments entity

我将用户的id传递给控制器​​。此id用于填充另一个实体的字段,以便该实体可以知道它所属的位置。控制器的代码是

 public function nuevamedidaAction($id, Request $peticion){

    $em = $this->get('doctrine')->getEntityManager();

    $medida = new \Goodday\PreditBundle\Entity\Medida;

    $medida->setHijo($id);



    $form = $this->createForm(new \Goodday\PreditBundle\Form\MedidaType(), $medida);


    $form->handleRequest($peticion);




        if ($form->isValid()) {


            $em->persist($medida);
            $em->flush();
                                        return $this->render('PreditBundle:Default:test2.html.twig');


        }





    return $this->render('PreditBundle:Medida:newmedida.html.twig', array('form' => $form->createView(), 'error' => $form->getErrors()));
}  

现在我的实体中的字段“hijo”看起来像是:

    /**
 * @ORM\ManyToOne(targetEntity="Hijo", inversedBy="medidas", cascade={"remove"})
 * @ORM\JoinColumn(name="hijo_id", referencedColumnName="id")
 */

受保护的$ hijo;

它返回以下错误

“可捕获致命错误:传递给Goodday \ PreitBundle \ Entity \ Medida :: setHijo()的参数1必须是Goodday \ PreditBundle \ Entity \ Hijo的实例,给定字符串,在C:\ Users \ Diego \ Desktop中调用\ Practicas \ predit \ src \ Goodday \ PreditBundle \ Controller \ HijoController.php在第74行并在C:\ Users \ Diego \ Desktop \ Practicas \ predit \ src \ Goodday \ PreditBundle \ Entity \ Medida.php第461行中定义“< / p>

感谢您的所有答案

1 个答案:

答案 0 :(得分:0)

错误很明确:Argument 1 passed to Goodday\PreditBundle\Entity\Medida::setHijo() must be an instance of Goodday\PreditBundle\Entity\Hijo, string given

您必须将Hijo对象传递给方法setHijo

$hijo = $em->getRepository('GooddayPreditBundle:Hijo')->find($id);
$medida->setHijo($hijo);

希望它有用。

最好的关注。