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

Ok、

コントローラープラグインを作成することでこれを解決しました:

<?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() を作成する方法です。まあ、少なくともそれを行う1つの方法。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 に答える