Symfony2:twitch中的form_widget调用抛出异常";可捕获的致命错误..必须是Symfony


Symfony2: form_widget call in twig throws exception "Catchable fatal error ... must be an instance of SymfonyComponentFormFormView"

当我在控制器中创建一个表单时,操作如下:

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

我试着在一个像这样的树枝模板中呈现这个表单:

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

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

在呈现模板期间引发异常("可捕获的致命错误:传递给Symfony''Component''Form''FormRenderer::searchAndRenderBlock()的参数1必须是Symfony/Component''Form''Form的实例,给定的Symfony''Component'' Form''Form实例,在…中调用"

如何解决此问题?

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

使用修复此问题。。。

... ->getForm()->createView();

FormBuilder::getForm构建Form对象。。。Form::createView然后创建一个FormView对象。

在控制器中:

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

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

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