21

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

$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: Argument 1 passed to Symfony\Component\Form\FormRenderer::searchAndRenderBlock() must be an instance of Symfony\Component\Form\FormView, instance of Symfony\ Component\Form\Form 给定,在...中调用

我该如何解决这个问题?

4

2 回答 2

51

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

使用...修复此问题

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

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

于 2013-07-10T02:45:08.667 回答
2

在您的控制器中:

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

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

return $this->render('@App/public/index.html.twig', array(
    'form'=>$form->createView()
));
于 2017-07-16T15:51:47.643 回答