J'appelle un rendu comme dans mon modèle Twig (ligne 18)
{{ render(controller('AcmeReadingBundle:Default:newAction')) }}
Et le contrôleur est
public function newAction(Request $request)
{
$message = new Message();
$form = $this->createFormBuilder($message)
->add('body', 'text')
->add('save', 'submit')
->getForm();
$form->handleRequest($request);
return $this->render('AcmeReadingBundle:Default:new.html.twig', array(
'form' => $form->createView(),
));
}
Et le fichier new.html.twig est
{{ form(form) }}
Je continue à avoir cette erreur:
An exception has been thrown during the rendering of a template ("The controller for URI "/_fragment" is not callable.") in AcmeReadingBundle:Default:show.html.twig at line 18.
Solution:
Vous essayez de rendre un template ('... new.html.twig') en utilisant controller()
au lieu d'un controller/action !
changez votre fonction render
en:
{{ render(controller('AcmeReadingBundle:Default:new')) }}
(avis: non "... Action" dans le nom de la méthode)
Astuce:
L'exception _fragment est généralement levée s'il y a un problème avec le nom du contrôleur spécifié.
c'est-à-dire que le nom du contrôleur/de l'action est mal orthographié est souvent la raison de cette exception.
Lectures supplémentaires:
Jetez un oeil à cet article de livre de cuisine .
Je suis d'accord avec @nifr Vous essayez de rendre un modèle ('... new.html.twig') en utilisant controller () au lieu d'un controller/action!
changez votre fonction de rendu en:
{{render (controller ('AcmeReadingBundle: Par défaut: new'))}}
(remarque: non "... Action" dans le nom de la méthode)
Ci-dessous est plus si la solution ci-dessus ne vous donne pas la solution.
Merci,
Anirudh Sood.