2013-07-10 10 views
19

Wenn ich ein Formular in meiner Controller-Aktion wie folgt zu erstellen:Symfony2: form_widget Aufruf in Zweig wirft Ausnahme „Abfangbare fatale Fehler ... muss eine Instanz von Symfony Component Formular Formview seine“

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

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

... und ich versuche, diese Form in einem Zweig Vorlage so zu machen:

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

... der form_widget Aufruf erzeugt die folgende Ausnahme/Fehler:

An exception has been thrown during the rendering of a template ("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 given, called in ...

Wie kann ich dieses Problem beheben?

+4

Sie vorbei ein Formular, wenn Sie einen Blick passieren sollten – DevZer0

Antwort

47

Sie müssen eine Instanz von Symfony\Component\Form\FormView anstelle von Symfony\Component\Form\Form zu Ihrer Ansicht übergeben.

Fix diese mit ...

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

FormBuilder::getForm baut das Formular Objekt ... Form::createView erstellt dann eine Formview Objekt.

1

in Ihrem Controller:

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

Aber wenn man es auf die Ansicht senden mag, ist es ein Standardbeispiel:

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