게스트, 멤버 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은 해당 페이지 만 조회하고 해당 하위 페이지는 조회하지 않는 것으로 보입니다. 전체 하위 메뉴를 가져 오는 방법이 있습니까?
감사합니다.
아마도 'findAllBy' – RockyFord
예상 결과의 스크린 샷을 추가 할 수 있습니까? 내가 성취하고자하는 것이 무엇인지 잘 모르겠습니다. –