2013-04-16 1 views
0

게스트, 멤버 1, 멤버 2 및 관리자의 4 가지 액세스 수준이있는 사이트에 대해 Zend Navigation을 구성했습니다. 나는 하위 메뉴를 사용하여 상단 메뉴의 일관성을 원하고 있기 때문에, 나는 현재 사용자의 상태를 찾을 수 젠드의 findBy 기능을 사용하고 메뉴를 표시 할젠드 탐색 하위 페이지가있는 페이지 및 렌더 메뉴 찾기

<?xml version="1.0" encoding="UTF-8"?> 
<config> 
    <nav> 
     <default> 
      <label>Home</label> 
      <controller>index</controller> 
      <action>index</action> 
      <resource>index</resource> 
      <privilege>index</privilege> 

      <pages> 
       <home> 
        ... 
       </home> 
       <signin> 
        ... 
       </signin> 
       <signup> 
        ... 
       </signup> 
      </pages> 
     </default> 

     <member1> 
      <label>Member1 Main</label> 
      <controller>member1</controller> 
      <action>index</action> 
      <resource>member1</resource> 
      <privilege>index</privilege> 

      <pages> 
       <dashboard> 
        ... 
       </dashboard> 
       <settings> 
        <label>Settings</label> 
        <controller>auth</controller> 
        <action>editpassword</action> 
        <resource>auth</resource> 
        <privilege>editpassword</privilege> 
        <class>settings</class> 
        <title>User settings</title> 

        <pages> 
         <account> 
          ... 
         </account> 
         <logout> 
          ... 
         </logout> 
        </pages> 
       </settings> 
      </pages> 
     </member1> 

     <member2> 
      <label>Member2 Main</label> 
      <controller>member2</controller> 
      <action>index</action> 
      <resource>member2</resource> 
      <privilege>index</privilege> 

      <pages> 
       <dashboard> 
        ... 
       </dashboard> 
       <profile> 
        ... 
       </profile> 
       <settings> 
        <label>Settings</label> 
        <controller>auth</controller> 
        <action>editpassword</action> 
        <resource>auth</resource> 
        <privilege>editpassword</privilege> 
        <class>settings</class> 

        <pages> 
         <account> 
          ... 
         </account> 
         <logout> 
          ... 
         </logout> 
        </pages> 
       </settings> 
      </pages> 
     </member2> 

     <admin> 
      <label>Dashboard</label> 
      <controller>admin</controller> 
      <action>index</action> 
      <resource>admin</resource> 
      <privilege>index</privilege> 

      <pages> 
       <dashboard> 
        ... 
       </dashboard> 
       <logout> 
        ... 
       </logout> 
      </pages> 
     </admin> 

    </nav> 
</config> 

:

내 탐색 XML이 같이 보입니다 . 이는 같은 수행됩니다

if ($this->user) { 
    $submenu = $this->navigation()->findOneByLabel('Member1 Main'); 
    $options = array(
     'ulClass'    => 'navigation', 
     'renderParents'   => true, 
     'minDepth'    => null, 
     'maxDepth'    => null 
    ); 
    echo $this->navigation()->menu()->renderMenu($submenu, $options); 
} else { 
    echo $this->navigation()->menu()->setUlClass('navigation')->setOnlyActiveBranch(true)->setMinDepth(1)->setMaxDepth(1); 
} 
탐색을위한

내 부트 스트랩 비트는 꽤 일반적이며, 다음과 같습니다 : 나는 "멤버 1 메인"페이지를 표시 얻을 수있는 지금

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

    $navConfig = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml', 'nav'); 
    $navigation = new Zend_Navigation($navConfig); 

    $front  = Zend_Controller_Front::getInstance(); 
    $myPlagin = $front->getPlugin('My_Controller_Plugin_Acl'); 

    $view->navigation($navigation)->setAcl($myPlagin->getMyAcl()) 
           ->setRole($myPlagin->getMyUserRole()); 
} 

을하지만, 만 하나의 페이지를 보여 주지만, 렌더링 할 필요가있는 것은 그 페이지의 전체 하위 메뉴입니다. findOneByLabel은 해당 페이지 만 조회하고 해당 하위 페이지는 조회하지 않는 것으로 보입니다. 전체 하위 메뉴를 가져 오는 방법이 있습니까?

감사합니다.

+1

아마도 'findAllBy' – RockyFord

+0

예상 결과의 스크린 샷을 추가 할 수 있습니까? 내가 성취하고자하는 것이 무엇인지 잘 모르겠습니다. –

답변

0

밖으로 나옵니다 예상 결과를 얻으려면 findAllByLabel을 사용해야했습니다. 감사합니다 @ RockyFord