2013-07-01 9 views
17

Ich rufe ein wie so in meinem Zweig Vorlage machen (Linie 18)Symfony-Controller Fehler Einbetten: Der Controller für URI "/ _fragment" ist nicht aufrufbar

{{ render(controller('AcmeReadingBundle:Default:newAction')) }} 

und den Controller

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(), 
     )); 
    } 

Und die new.html.twig Datei ist

{{ form(form) }} 

ich halte diesen Fehler:

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. 

Antwort

30

Lösung:

Sie versuchen, eine Vorlage ('... new.html.twig') mit controller() anstelle eines controller/action zu machen!

Änderung Ihrer render Funktion:

{{ render(controller('AcmeReadingBundle:Default:new')) }} 

(Hinweis: no "... Aktion" in Methodenname)


Tipp:

Die _fragment Ausnahme wird meistens ausgelöst, wenn mit dem angegebenen Controller-Namen etwas nicht stimmt.

d. H. Fehler beim Anzeigen des Controllers/Aktionsnamens sind oft der Grund für diese Ausnahme.


Weiterführende Literatur:

Werfen Sie einen Blick auf this cookbook article.

+0

Ich versuchte es mit diesem Code und ich bekomme das gleiche Ergebnis –

+0

Entschuldigung sollte neu sein statt newAction – nifr

+0

Mein Controller heißt newAction, wie im Codebeispiel. Und ich nenne es wie AcmeReadingBundle: Standard: Aktion –

0

Ich stimme zu @nifr Sie versuchen, eine Vorlage ('... new.html.twig') mit Controller() anstelle eines Controllers/Aktion zu rendern!

Ihre machen Wechsel-Funktion:

{{render (Controller ('AcmeReadingBundle: Standard: neue'))}}

(Hinweis: keine "... Aktion" in Name-Methode)

Below is more if above solution is not giving you solution.

  1. überprüfen Sie, ob eine definierte Funktion in der Steuerung eine öffentliche Funktion ist. In meinem Fall habe ich das als geschützt definiert.

Danke,

Anirudh Sood.