2011-11-17 2 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 : 부분 파일에 layout.phtml

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

에서

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); 
} 

: /애플리케이션 /보기/공유

이렇게함으로써
<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을 생성하기로 결정 : D/menu.phtmt이 쓰기! 도움이되었는지 확인해보고 싶습니다.

+0

좋습니다. 도와 줘서 고마워. ;) –

+0

즐거웠다! – JellyBelly