美好的一天,
我很遗憾如何在ZF2中实现我想要的东西,因为我是新手。我有一个使用ZF2和ZfcTwig模块的网站,我希望我的TWIG模板能够根据我的mysite.global.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 -->
和我的mysite.global.php
return array(
'mysite' => array(
'navigation' => array(
'home' => array(
'name' => 'Home',
'route' => 'home',
),
'profile' => array(
'name' => 'Profile',
'route' => 'myroute',
'active' => true
),
)
)
);
这是我迷失的地方。如何将我的设置传输到layout.twig,以便使用该布局的每个页面都使用相同的项目?我尝试了这段代码并将它放在onBootstrap()方法的Module.php中:
//get my settings and place it to $navigation then
$view = $e->getApplication('application')->getMvcEvent()->getViewModel();
$view->navigation = $navigation;
但它不起作用。 {{navigation}}仍包含一个空数组。我做错了什么?
答案 0 :(得分:1)
我使用的解决方案:
in module.config.php
'service_manager' => array(
'factories' => array(
'translator' => 'Zend\I18n\Translator\TranslatorServiceFactory',
'Navigation' => 'Zend\Navigation\Service\DefaultNavigationFactory',
),
),
.....
'navigation' => array('default' =>array(
array('label' => 'Home', 'route' => 'home', 'pages' => array(
array('label' => 'Profile', 'route' => 'myroute'),
),
),
),
),
然后在layout.twig
中 {{ navigation('navigation').menu() | raw }}
和
{{ navigation('navigation').breadcrumbs().render('navigation') | raw }}
就是这样,它应该有效,顺便说一下,它使用Navigation helper