当我在控制器中创建一个表单时,操作如下:
$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实例,在…中调用"
如何解决此问题?
您必须将SymfonyComponentFormFormView
的实例而不是SymfonyComponentFormForm
传递给视图。
使用修复此问题。。。
... ->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()
));