web-dev-qa-db-ja.com

Symfony2:twigでform_widgetを呼び出すと例外がスローされる "キャッチ可能な致命的なエラー...はSymfony \ Component \ Form \ FormViewのインスタンスでなければならない"

次のようにコントローラーアクション内にフォームを作成すると、

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

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

...そして私はこのフォームをtwigテンプレートでこのようにレンダリングしようとします:

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

... form_widgetを呼び出すと、次の例外/エラーが発生します。

テンプレートのレンダリング中に例外がスローされました(「キャッチ可能な致命的エラー:Symfony\Component\Form\FormRenderer :: searchAndRenderBlock()に渡される引数1は、Symfony\Component\Form\FormViewのインスタンスであり、Symfony \のインスタンスである必要があります。 Component\Form\Formが指定され、で呼び出されます...

この問題を解決するにはどうすればよいですか?

20

ビューにSymfony\Component\Form\FormViewではなくSymfony\Component\Form\Formのインスタンスを渡す必要があります。

これを使用して修正...

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

FormBuilder::getFormFormオブジェクトを作成します... Form::createViewFormViewオブジェクトを作成します。

50

コントローラ内:

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

しかし、それをビューに送信したい場合、それは標準的な例です。

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