2016-07-26 5 views
0

Ich benutze Symfony 3.1.2 und versuche, eine einfache Navigationsvorlage (Zweig) in base.html.twig zu implementieren.Render Controller in Symfony funktioniert nicht

<!DOCTYPE html> 
<html> 
    <head> 
     ... 
    </head> 
    <body> 
    {{ render(controller('AppBundle:Navigation:topNavigation')) }} 
    {% block body %}{% endblock %} 
    {% block javascripts %}{% endblock %} 
    </body> 
</html> 

Die navigation.html.twig Vorlage im Standardverzeichnis wie folgt aussieht

<div id="navigation-wrapper"> 
     <ul id="navigation"> 
     {% for item in navigation %} 
      <li><a href="{{ item.url }}">{{ item.label }}</a></li> 
     {% endfor %} 
     </ul> 
    </div> 

Die Navigation in AppBundle/Regler ähnliche Es

namespace AppBundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 

class NavigationController extends Controller 
    { 
     public function topNavigation() 
     { 
      $navigation = array(
       array("url"=>"/login", "label"=>"Login"), 
       array("url"=>"/register", "label"=>"Registrieren") 
      ); 

      return $this->render('default/navigation.html.twig', array(
       'navigation' => $navigation,)); 
     } 
} 

aussieht, ist kein Fehler, Navigation -> topNavigation wurde nicht ausgeführt, es wird nichts gerendert und ich weiß nicht, was ich tun soll. Hat jemand eine Idee?

Antwort

0

Alles ist in Ordnung. Sie müssen für jede Controller-Methode das Suffix Action haben. Ihre Methode in NavigationController sollte wie:

public function topNavigationAction() { 
    $navigation = array(
     array("url" => "/login", "label" => "Login"), 
     array("url" => "/register", "label" => "Registrieren") 
    ); 

    return $this->render('default/navigation.html.twig', array(
      'navigation' => $navigation, 
    )); 
} 

es sicher funktionieren.

+0

Danke, das funktioniert, es war ein typischer Anfänger Fehler das Action-Suffix zu vergessen. Danke für schnelle Antwort! –