2011-11-17 42 views
1

我使用Zend_Navigation創建菜單。 問題是我檢測了幾次「活動菜單」,即當前頁面的「li」。Zend Framework雙類菜單有效

這裏是我的navigation.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> 
[...] 

什麼是解決方案?

真誠,

回答

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')?> 

/應用程序/視圖/股d/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! 我希望看看有幫助!

+0

好吧,它的工作原理。感謝您的幫助。 ;) –

+0

很高興! – JellyBelly