navigation.xml 파일에서 제공하는 데이터로 Zend_Navigation을 실행하고 있습니다. 첫 번째 레벨 (0)이 Frontend와 Backend의 두 페이지로 구성된다고 가정 해 봅시다. 프런트 엔드는 게스트 역할 인 액세스 권한에 의해서만 백엔드에 액세스 할 수 있습니다.Zend_Navigation : 현재 사용자/역할이 액세스 할 수있는 페이지 만 가져 오기
내가 할 경우
<?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
관리자로 로그인 할 때 제대로 로그인하지 "프런트 엔드"링크를 표시하고 모두 "프런트 엔드"와 "백엔드"링크.
그러나 "프론트 엔드"링크를 표시하는 것은 게스트에게 그다지 중요하지 않습니다. 어쨌든 다른 페이지로 이동할 수 없기 때문입니다. 그래서 손님을 위해 내비게이션을 전혀 표시하지 않을 것입니다.
은 내가
<?php
if ('guest' !== $this->view->role) {
echo $this->navigation()->menu();
}
?>
할 수있는 알고 있지만 나는이 작업을 수행하는 더 나은 방법을 바라고 있어요.
내가 찾고 내가 Zend_Navigation에서 제공하는 API와이를 달성하는 방법을 알아낼 수 없습니다
<?php
if (count($this->navigation()->getPagesForRole($this->view->role)) > 1) {
echo $this->navigation()->menu();
}
?>
같은 것을 ... 나는 getPages() 메소드가 참조하지만, 그것은 "필터링되지 않은"모든 페이지를 반환합니다.
나는 이것에 대한 쉬운 해결책이 있다고 가정하지만, 지난 두 시간 동안 이것을 알아 내려고 노력했지만 아무 것도 발견하지 못했기 때문에 잘못된 방향으로보고 있습니다.
감사합니다.
편집 : 내가 탐색 이미 권한을 제어하기 위해 ACL을 사용하고, 잘 작동하고 있음을 언급하는 것을 잊었다
. 내 유일한 문제는 하나의 링크 항목 탐색만으로는 쓸모가 없으므로 게스트의 Frontend/Backend 탐색을 표시하고 싶지 않다는 것입니다. 혼란을 드려 죄송합니다.
감사합니다. 이미 Zend_Acl을 사용하고 있다는 사실을 잊어 버렸습니다. 미안합니다. – jgxvx
@jgxvx 손님이 탐색의 항목에 대한 액세스 권한이 없는지 확인하십시오. – Gordon