Symfony 中的渲染控制器不起作用
Render Controller in Symfony doesn't work
我使用 Symfony 3.1.2 并尝试在 base.html.twig 中实现一个简单的导航模板 (twig)。
<!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>
AppBundle/Controller 中的 NavigationController 如下所示
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 没有 运行,没有渲染,我不知道该怎么做。有人有想法吗?
一切都很好。您必须为每个控制器方法添加后缀 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,
));
}
它肯定会起作用。
我使用 Symfony 3.1.2 并尝试在 base.html.twig 中实现一个简单的导航模板 (twig)。
<!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>
AppBundle/Controller 中的 NavigationController 如下所示
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 没有 运行,没有渲染,我不知道该怎么做。有人有想法吗?
一切都很好。您必须为每个控制器方法添加后缀 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,
));
}
它肯定会起作用。