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?

20
demandé sur nifr 2013-07-10 06:01:22

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.

50
répondu nifr 2013-07-10 02:45:08

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()
));
2
répondu Ruben Guix Fernandez 2017-07-16 15:51:47