Symfony2: appel widget de forme dans les lancements de brindilles exception " erreur fatale récupérable ... doit être une instance de SymfonyComponentFormFormView"
quand je crée un formulaire dans mon action de controller comme ceci:
$form = $this->createFormBuilder()
->add('field_name')
->getForm();
return array(
'form' => $form
);
... et j'essaie de rendre ce formulaire dans un template twig comme ceci:
<form action="{{ path('...') }}" method="post">
{{ form_widget(form.field_name) }}
</form>
... form_widget
invocation produit de l'exception suivante/erreur:
une exception a été lancée lors du rendu d'un modèle ("Catchable Fatal Error: Argument 1 passé à SymfonyComponentFormFormRenderer::searchAndRenderBlock() doit être une instance de SymfonyComponentFormFormView, instance de SymfonyComponentFormForme donnée, appelée ...
Comment puis-je résoudre ce problème?
2 réponses
Vous devez passer une instance de Symfony\Component\Form\FormView
au lieu de Symfony\Component\Form\Form
à votre vue.
corrigez cela en utilisant ...
... ->getForm()->createView();
FormBuilder::getForm
construit le Formulaire objet ... Form::createView
crée alors un FormView objet.
Dans Votre Controller:
return array(
'form' => $form->createView()
);
Mais si vous souhaitez l'envoyer à la vue, c'est un standard exemple:
return $this->render('@App/public/index.html.twig', array(
'form'=>$form->createView()
));