2016-07-26 4 views
0

Я использую Symfony 3.1.2 и пытаюсь реализовать простой шаблон навигации (twig) внутри base.html.twig.Render Controller в Symfony не работает

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

navigation.html.twig шаблон в каталоге по умолчанию выглядит следующим образом

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

NavigationController в AppBundle/Controller выглядит как этот

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

Там нет ошибки, NavigationController -> topNavigation не запускался, ничего не отображается, и я не знаю, что делать. У кого-нибудь есть идея?

ответ

0

Все в порядке. У вас должен быть суффикс Action для каждого метода контроллера. Ваш метод NavigationController должен быть как:

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

Он будет работать точно.

+0

Спасибо, что работает, это был типичный новичок. Ошибка забыть действие-суффикс. Спасибо за быстрый ответ! –