首先,感谢所有看过这个问题的人。 我有一个像userFormType的FormType。
class UserFormType extends AbstractType{
public function buildForm(FormBuilder $builder, array $options)
{
$builder->add('address','collection', ....)
->add('group','entity',....)
->add('companies','collection',....);
...
}
}
所以你看到我在用户表单中收到了两个集合。我创建了表单并设置了公司。当我想修改公司的信息和地址,但不与团体联系。所以我必须呈现一个用户表单,而不是一些公司表单或地址表单。所以我写一个像这样的控制器:
$user= $this->get('security.context')->getToken()->getUser();
$form =$this->createForm(new UserForm(),$user);
$request = $this->get('request');
if ('POST' == $request->getMethod()) {
$form->bindRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($user);
$em->flush();
....
}
}
当然,我不想修改组,所以在twig模板中,我点不会渲染组。表单是正确呈现的,但每次我尝试提交时,都会告诉我:
Argument 1 passed to ... User->setGroup() must be an instance of Group ... null given
所以我问,我该怎么办?
答案 0 :(得分:1)
具体错误是因为User中的方法定义可能是:
public function setGroup(Group $group);
但是为了将其设置为null,它需要是:
public function setGroup(Group $group = null);
这将修复错误,但它仍然可能不是您想要的功能明智。我的问题是,如果你没有使用它,为什么在表格上有组字段?您可能需要其他表单类型或将选项传递给表单,以便在编辑期间不包括组字段。