我想在控制器中为我的外键实体创建一个隐藏值.
我以前的控制器是这样的(工作正常):
->add('id_grup', 'entity', array('class' => 'Sifo\AdminBundle\Entity\MstGrup'))
Run Code Online (Sandbox Code Playgroud)
我想为我的表单分配一个隐藏值,如下所示:
->add('id_grup', 'hidden', array('data' => $id))
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误:
ContextErrorException:Catchable Fatal Error:传递给Sifo\AdminBundle\Entity\DftGrupMapel :: setIdGrup()的参数1必须是Sifo\AdminBundle\Entity\MstGrup的实例,给定字符串,在C:\ Sifony\vendor\symfony\symfony中调用第360行的\ src\Symfony\Component\PropertyAccess\PropertyAccessor.php,在C:\ Sifony\src\Sifo\AdminBundle\Entity\DftGrupMapel.php第179行中定义
如何为隐藏的外键实体赋值?非常感谢你.
终于成功了!我需要在创建表单之前定义实体默认值,并且不要在 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(),
));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3786 次 |
| 最近记录: |