Symfony2:twig中的form_widget调用抛出异常“可捕获的致命错误......必须是Symfony \ Component \ Form \ FormView的实例”

时间:2013-07-10 02:01:22

标签: php forms symfony twig

当我在我的控制器动作中创建一个表单时,这样:

$form = $this->createFormBuilder()
    ->add('field_name')
    ->getForm();

return array(
    'form' => $form
);

...我尝试在这样的树枝模板中渲染此表单:

    <form action="{{ path('...') }}" method="post">
        {{ form_widget(form.field_name) }}
    </form>

... form_widget调用产生以下异常/错误:

  

在渲染模板期间抛出异常(“Catchable Fatal Error:传递给Symfony \ Component \ Form \ FormRenderer :: searchAndRenderBlock()的参数1必须是Symfony \ Component \ Form \ FormView的实例,实例给出的Symfony \ Component \ Form \ Form,在...中调用

如何解决此问题?

2 个答案:

答案 0 :(得分:50)

您必须将Symfony\Component\Form\FormView而不是Symfony\Component\Form\Form的实例传递给您的视图。

使用...

修复此问题
... ->getForm()->createView();

FormBuilder::getForm构建表单对象... Form::createView然后创建 FormView 对象。

答案 1 :(得分:2)

在您的控制器中:

return array(
    'form' => $form->createView()
);

但是如果你想将它发送到视图,它就是一个标准的例子:

return $this->render('@App/public/index.html.twig', array(
    'form'=>$form->createView()
));