当我在我的控制器动作中创建一个表单时,这样:
$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,在...中调用
如何解决此问题?
答案 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()
));