将类激活应用于Zend_Navigation中的锚标记

时间:2012-04-11 13:54:34

标签: zend-framework zend-navigation

我正在使用partials来装饰Zend_Navigation以获取所需的输出。一切都很好,除非我在class="active"标记中添加<a href..>有困难。这是我的布局部分sidebar.phtml

<ul id="menu" class="nav">
<?php foreach($this->container as $page): ?>
    <li class="<?php echo $page->class; ?>"><a href="<?php echo $page->getHref(); ?>"><span><?php echo $page->label; ?></span></a></li>
<?php endforeach; ?>
</ul>
<a href="<?php echo $page->getHref(); ?>">中的

我想为当前页面添加class="active"

我尝试了一些搜索后找到的解决方案。但没有什么对我有用。

大多数解决方案都谈到在控制器中执行此操作

$page = $this->view->navigation()->findOneByLabel('Your Label');
if ( $page ) {
  $page->setActive();
}

我还没有测试过这个。因为我在一个navigation.xml文件的布局中使用多个导航。我想知道我是否有办法在部分本身而不是在控制器或其他助手中做到这一点?

谢谢

1 个答案:

答案 0 :(得分:1)

这很容易。在视图中,您可以检查哪个页面处于活动状态:

if ($page->isActive()) { ... }

来自ZF文档:

  

注意:请注意,在页面中使用route属性时,还应指定路径定义的默认参数(模块,控制器,操作等),否则isActive()方法将无法确定如果页面处于活动状态。原因是目前无法从Zend_Controller_Router_Route_Interface对象获取默认参数,也无法从Zend_Controller_Router_Interface对象中检索当前路由。