1


zendナビゲーションを使用してメニューを作成しています。デフォルトのクラス 'active' を 'selected' に変更し、クラスをアクティブ リンクのアンカー タグに追加したいと考えています。ここに私がブートストラップに入れた私のサンプルコードがあります

protected function _initNavigation()
{

    $pages = array(
                        array(
                            'module' => 'admin',
                            'label' => 'Services',
                            'resource' => 'admin',
                            'controller' => 'services',
                            'pages' => array(
                                array(
                                    'module'        => 'admin',
                                    'label'         => 'Add Services',
                                    'controller'    => 'services',
                                    'action'        => 'manage',
                                    'route'         => 'default',

                                    ),
                                array(
                                    'module'        => 'admin',
                                    'label'         => 'View Services',
                                    'controller'    => 'services',
                                    'action'        => 'view',
                                    'route'         => 'default',
                                    ),
                                ),
                            )
                        );

            $this->bootstrap('layout');
            $layout = $this->getResource('layout');
            $view = $layout->getView();

    $config = new Zend_Config($pages);
            $navigation = new Zend_Navigation($config);
            $view->navigation($navigation);
}



レイアウトのビュースクリプトで、これをコードの下に置きました

echo $this->navigation()->menu()
                        ->setUlId('menu');


電流出力

<ul class="navigation" id="menu">
<li class="active">
    <a href="/test/public/admin/services">Services</a>
    <ul>
        <li>
            <a href="/test/public/admin/services/manage">Add Services</a>
        </li>
        <li class="active">
            <a href="/test/public/admin/services/view">View Services</a>
        </li>
    </ul>
</li>


期待される出力

<ul class="navigation" id="menu">
<li>
    <a href="/test/public/admin/services">Services</a>
    <ul style='display:block;'>
        <li>
            <a href="/test/public/admin/services/manage">Add Services</a>
        </li>
        <li>
            <a class='selected' href="/test/public/admin/services/view">View Services</a>
        </li>
    </ul>
</li>

4

1 に答える 1

1

ブートストラップの '_initNavigation()' メソッドの最後で、オブジェクト 'view' のレジストリを設定するだけです。

Zend_Registry::set("view", $view);

プラグイン「TestNavigation」を作成し、その中に次のコードを追加します

 public function routeShutdown(Zend_Controller_Request_Abstract $request)
{

    foreach (Zend_Registry::get('view')->navigation()->getPages() as $page) {

            foreach ($page->getPages() as $subpage){                    
                $uri = $subpage->getHref();
                if ($uri === $request->getRequestUri()) {
                    $subpage->setClass('selected');
                }
            }
    }
}

それだけです。

于 2013-01-08T10:58:10.863 に答える