使用ZF2和TWIG初始化Module.php中的布局变量


Initializing Layout Variables in Module.php using ZF2 and TWIG

你好,

我有一个包含ZF2骨架内容的分支布局模板(zfctrick版本(,我想使用我将在module.config.php.中设置的变量进行动态主导航

布局.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中。

当我在模板中不使用trick时(例如,没有trick代码的layout.phtml(,此代码有效,但当我使用上面的layout.twig时,{{navigation}}为空。

我认为我不应该使用

$view = $e->getApplication('application')->getMvcEvent()->getViewModel();

因为我认为它返回的是默认的zf2ViewModel,而不是trick版本,但我不知道它是如何检索的。

如果这不是问题所在,我做错了什么?如果我能让它工作,我怎么能在我的一个控制器中将$navigation["配置文件"]的活动索引更改为false?

非常感谢!

更新:

似乎没有人经历过同样的问题。我这样做不对吗?有更好的方法吗?目标是创建一个动态主菜单和导航,可以使用module.config.php中的设置进行修改,而不是不断更新视图文件。在特定的控制器中更改它也不好,因为我希望它是全局的,因为主菜单在每一页上都是一样的。我在网上搜索了一下,但找不到用树枝做这件事的方法。

$sm->get('ZfcTwigRenderer');

使用此代码访问树枝渲染器

示例:

public function onBootstrap(MvcEvent $e)
    {
        $ZfcTwigRenderer = $e->getApplication()->getServiceManager()->get('ZfcTwigRenderer');

    }