【问题标题】:Entity Field type hidden in Symfony2Symfony2 中隐藏的实体字段类型
【发布时间】:2014-05-10 19:15:10
【问题描述】:

我想在控制器中为我的外键实体创建一个隐藏值。

我以前的控制器是这样的(工作正常):

->add('id_grup', 'entity', array('class' => 'Sifo\AdminBundle\Entity\MstGrup'))

我想为我的表单分配一个隐藏值,如下所示:

->add('id_grup', 'hidden', array('data' => $id))

但它给了我一个错误:

ContextErrorException:可捕获的致命错误:参数 1 传递给 Sifo\AdminBundle\Entity\DftGrupMapel::setIdGrup() 必须是一个实例 Sifo\AdminBundle\Entity\MstGrup 的,给定的字符串,调用 C:\Sifony\vendor\symfony\symfony\src\Symfony\Component\PropertyAccess\PropertyAccessor.php 在第 360 行并在 C:\Sifony\src\Sifo\AdminBundle\Entity\DftGrupMapel.php 第 179 行

如何为隐藏的外键实体赋值?

【问题讨论】:

标签: symfony


【解决方案1】:

终于成功了!我需要在创建表单之前定义实体默认值,并且不要在 FormBuilder 中再次添加:

public function manageAction(Request $request, $id)
{
    $em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('SifoAdminBundle:MstGrup')->find($id);

if (!$entity) {
    throw $this->createNotFoundException('Unable to find MstGrup entity.');
}  

$entity_new = new DftGrupMapel();
$entity_new->setIdGrup($entity);
$new_form    = $this->createFormBuilder($entity_new)
    ->setAction($this->generateUrl('admin_grup_mapel_manage', array('id' => $id)))
    ->setMethod('POST')
->getForm();

$new_form->handleRequest($request);

if ($new_form->isValid()) {
    $em_new = $this->getDoctrine()->getManager();
    $em_new->persist($entity_new);
    $em_new->flush();

    return $this->redirect($this->generateUrl('admin_grup_mapel_manage', array('id' => $id)));
}

return $this->render('SifoAdminBundle:DftGrupMapel:manage.html.twig', array(
    'entity'      => $entity, 
    'new_form'   => $new_form->createView(),            
));
}

【讨论】:

    猜你喜欢
    • 2015-02-10
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 2014-06-22
    • 2012-07-09
    • 1970-01-01
    • 2012-04-12
    相关资源
    最近更新 更多