【问题标题】:Zend Framework double class menu activeZend Framework 双类菜单激活
【发布时间】:2011-11-17 15:06:13
【问题描述】:

我用 Zend_Navigation 制作了一个菜单。 问题是我检测了几次“活动菜单”,即当前页面的“li”。

这是我的导航.xml

<?xml version="1.0" encoding="UTF-8"?>
<configdata>
<nav>   
    <home>
        <label>Accueil</label>
        <controller>index</controller>
    </home> 

    <search>
        <label>Riads</label>
        <controller>search</controller>
        <action>index</action>
        <params>
            <q>allriads</q>
        </params>
    </search>

    <last>
        <label>Dernières Minutes</label>
        <uri>#</uri>
    </last>

    <promotion>
        <label>Promotions</label>
        <uri>#</uri>
    </promotion>

    <groupes>
        <label>Groupes</label>
        <uri>#</uri>
    </groupes>

    <contact>
        <label>Contact</label>
        <controller>apropros</controller>
        <action>contact</action>
    </contact>

</nav>

这是我的引导程序中的代码

/**
 * @return Zend_Navigation
 */
protected function _initNavigation()  
{
    $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
    $this->_view->navigation(new Zend_Navigation($config));
    $activeNav = $this->_view->navigation()->findByController('index');
    $activeNav->active = true;
    $activeNav->setClass("active");
}

这是生成的 HTML

<ul class="navigation">
<li class="active">
    <a class="active" href="/v2/">Accueil</a>
</li>
<li class="active">
    <a href="/v2/search/index/q/allriads">Riads</a>
</li>

<li>
    <a href="#">Dernières Minutes</a>
</li>
<li>
    <a href="#">Promotions</a>
</li>
<li>
    <a href="#">Groupes</a>

</li>
<li>
    <a href="/v2/apropros/contact">Contact</a>
</li>
</ul>

好的代码必须是:

<ul class="navigation">
<li>
    <a href="/v2/">Accueil</a>
</li>
<li>
   <a href="/v2/search/index/q/allriads">Riads</a>
</li>
[...]

解决办法是什么?

此致,

【问题讨论】:

    标签: php zend-framework zend-navigation


    【解决方案1】:

    我的解决方案

    更改您的 Bootrasp.php:

    public function _initNavigation()
    {
        $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav');
        $navigation = new Zend_Navigation($config);
        Zend_Registry::set('Zend_Navigation', $navigation);
    }
    

    在你的 layout.phtml 中

    <?=$this->navigation()->menu()->renderPartial(null, 'shared/menu.phtml')?>
    

    在部分文件中:/application/views/shared/menu.phtmt这样写:

    <ul class="navigation">
        <?
        foreach ($this->container as $page) :
        /** @var $page Zend_Navigation_Page_Mvc */
        ?>
            <li class="<?=$page->isActive(true) ? 'active' : ''?>">
                <a href="<?=$page->getHref()?>"><b><?=$page->label?></b></a>
            </li>
        <? endforeach; ?>
    </ul>
    

    通过这样做,它会禁止 Zend_Navigator 生成 html,但您决定生成 html! 希望能帮到你!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多