symfony2渲染表单的一部分

时间:2012-06-01 14:36:02

标签: symfony

首先,感谢所有看过这个问题的人。 我有一个像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

所以我问,我该怎么办?

1 个答案:

答案 0 :(得分:1)

具体错误是因为User中的方法定义可能是:

public function setGroup(Group $group);

但是为了将其设置为null,它需要是:

public function setGroup(Group $group = null);

这将修复错误,但它仍然可能不是您想要的功能明智。我的问题是,如果你没有使用它,为什么在表格上有组字段?您可能需要其他表单类型或将选项传递给表单,以便在编辑期间不包括组字段。