web-dev-qa-db-fra.com

Erreur d'intégration du contrôleur Symfony: le contrôleur pour l'URI "/ fragment" n'est pas appelable

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.
19
a53-416

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 .

32
nifr

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.

  1. Vérifiez si une fonction définie dans le contrôleur est une fonction publique. Dans mon cas, j'ai défini cela protégé.

Merci,

Anirudh Sood.

0
Anirudh Sood