0

如何将类添加到活动导航链接?如果链接指向 URI /index/index 并且请求 URI 也是 /index/index,我希望链接具有类,例如:

<li class="active">
    <a href="/index/index">Index</a>
</li>

这就是我在引导程序中初始化导航的方式:

protected function _initNavigation()
{
$navigation = new Zend_Navigation($this->getOption('navigation'));
$this->view->navigation($navigation);
}
4

2 回答 2

2

行,

我通过编写控制器插件解决了这个问题:

<?php
class My_Controller_Plugin_PrepareNavigation extends Zend_Controller_Plugin_Abstract
{
    public function routeShutdown(Zend_Controller_Request_Abstract $request)
    {
        $viewRenderer = Zend_Controller_Action_HelperBroker::getExistingHelper('ViewRenderer');
        $viewRenderer->initView();
        $view = $viewRenderer->view;

        $container = new Zend_Navigation(Zend_Registry::get('configuration')->navigation);
        foreach ($container->getPages() as $page) {
            $uri = $page->getHref();
            if ($uri === $request->getRequestUri()) {
                $page->setClass('active');
            }
        }
        $view->navigation($container);
    }
}
于 2010-09-06T07:29:14.027 回答
0

这是如何使用 Application.Zend 框架在 layout() 中创建一个 navigation()。好吧,至少有一种方法。CSS 类设置在

把它放到 Bootstrap.php 文件中:

protected function _initNavigation() 
{
     $this->bootstrap('layout');
     $layout = $this->getResource('layout');
     $view = $layout->getView();        
     include APPLICATION_PATH . '/layouts/scripts/menu.phtml';      
     $view->navigation($container);
}    

这允许您在文件 menu.phtml 中为菜单创建一个数组,以便您仍然可以在当前链接上维护活动类。出于某种奇怪的原因,如果您使用它,您必须在数组中包含控制器属性才能获取当前链接上的 CSS 活动类。

将这样的内容放入 /layouts/scripts/menu.phtml 文件中:

$container = new Zend_Navigation(array(
array(
    'label' => 'HOME',
    'id' => 'tasks',
    'uri'=>'/',
    'controller' => 'Index'
),
array(
    'label' => 'Contact',
    'uri' => 'contact',
    'controller' => 'Contact'
), 

.... more code here ...        

将其放入 layout.phtml 文件中:

$options = array('ulClass' => 'menu');
于 2012-02-03T06:25:13.187 回答