美好的一天,
我有一个包含ZF2骨架(zfctwig版本)内容的树枝布局模板,我希望使用我将在module.config.php中设置的变量进行动态主导航。
layout.twig:
<div class="nav-collapse collapse">
<ul class="nav">
{% for item in navigation %}
<li {% if item.active %} class="active" {% endif %}>
<a href="{{ url(item.route) }}">
{{ translate(item.name) }}
</a>
</li>
{% endfor %}
</ul>
</div><!--/.nav-collapse -->
我将使用Module.php中的onBootstrap()方法传递它:
Module.php:
$navigation = array(
'home' => array(
'name' => 'Home',
'route' => 'home',
),
'profile' => array(
'name' => 'Profile',
'route' => 'myroute',
'active' => true
),
);
$view = $e->getApplication('application')->getMvcEvent()->getViewModel();
$view->navigation = $navigation;
在我开始工作之后,$ navigation变量将放在我的module.config.php中。
当我在我的模板中没有使用twig时(例如没有twig代码的layout.phtml),当我使用上面的layout.twig时,{{navigation}}是空的。
我认为我不应该使用
$view = $e->getApplication('application')->getMvcEvent()->getViewModel();
因为我认为它返回默认的zf2 ViewModel而不是twig版本,但我不知道它是如何检索的。
如果这不是问题,我做错了什么?如果我使用它,如何在我的一个控制器中将$ navigation ['profile']的活动索引更改为false?
非常感谢!
更新
似乎没有人遇到同样的问题。我这样做是错误的吗?有一个更好的方法吗?目标是创建一个动态主菜单和导航,可以使用module.config.php中的设置进行修改,而不是不断更新视图文件。在特定控制器中更改它也不好,因为我希望它是全局的,因为主菜单在每个页面上都是相同的。我在网上搜索但是找不到使用树枝的方法。
答案 0 :(得分:1)
$sm->get('ZfcTwigRenderer');
使用此代码访问twig渲染器
示例:
public function onBootstrap(MvcEvent $e)
{
$ZfcTwigRenderer = $e->getApplication()->getServiceManager()->get('ZfcTwigRenderer');
}