2016-07-26 57 views
0

我使用Symfony 3.1.2并尝试在base.html.twig内部实现一个简单的导航模板(树枝)。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 /控制器看起来像这样

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

谢谢,这有效,它是一个典型的初学者错误,忘记行动后缀。感谢您的快速响应! –