1

再会,

我有一个 Twig 布局模板,其中包含 ZF2 骨架(zfctwig 版本)的内容,我想使用我将在 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() 方法传递它:

模块.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 中。

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

我认为我不应该使用

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

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

如果这不是问题,我做错了什么?如果我让它工作,我如何在我的一个控制器中将 $navigation['profile'] 的活动索引更改为 false?

非常感谢!

更新:

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

4

1 回答 1

1
$sm->get('ZfcTwigRenderer');

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

例子 :

public function onBootstrap(MvcEvent $e)
    {

        $ZfcTwigRenderer = $e->getApplication()->getServiceManager()->get('ZfcTwigRenderer');


    }
于 2013-03-27T06:15:27.227 回答