2013-08-29 1 views
0

프로젝트에서 여러 가지 역할에 대해 ACL 메뉴를 사용하지만 여러 역할에 대해 동일한 메뉴를 만들려고 할 때 문제가 발생하지만 일부 역할에 대해 어떤 점을 숨기십시오. 문서는 그것을 할 배열에 '자원'매개 변수를 사용하여 말한다 그러나 그것은 단지 전체 상위 메뉴에 대한 나를 위해 작동 :ZF2 탐색 (Zend Navigation)에서 다른 사용자 역할에 대한 다른 하위 메뉴

array(
    'label'  => 'Community', 
    'module'  => 'community', 
    'controller' => 'index', 
    'action'  => 'index', 
    'resource' => 'mvc:community' 
    'pages'  => array(
     array(
      'label'  => 'My Account', 
      'module'  => 'community', 
      'controller' => 'account', 
      'action'  => 'index', 
     ), 
     array(
      'label' => 'Forums', 
      'uri' => 'http://forums.example.com/', 
      'class' => 'external' // class 
     ) 
    ) 
) 

하지만 나는 현재 메뉴에서 일부 요소를 숨기려면 :

array(
    'label'  => 'Community', 
    'module'  => 'community', 
    'controller' => 'index', 
    'action'  => 'index', 
    'pages'  => array(
     array(
      'label'  => 'My Account', 
      'module'  => 'community', 
      'controller' => 'account', 
      'action'  => 'index', 
      'resource' => 'mvc:community.account' 
     ), 
     array(
      'label' => 'Forums', 
      'uri' => 'http://forums.example.com/', 
      'class' => 'external' 
     ) 
    ) 
) 

메뉴 ACL 빌드 코드 : 나는 전체 메뉴 '자원'키를 사용하면 아이에서 사용할 때

$acl = new \Zend\Permissions\Acl\Acl(); 
$acl->addRole(new \Zend\Permissions\Acl\Role\GenericRole('root')); 
$acl->addRole(new \Zend\Permissions\Acl\Role\GenericRole('guest')); 

$acl->addResource(new \Zend\Permissions\Acl\Resource\GenericResource('mvc:community.account')); 

$acl->allow('root', null); 
$acl->allow('guest', null); 
$acl->deny('guest', 'mvc:community.account'); 

그래서 작동이 -하지 않습니다. 현재 각 역할에 대해 거의 비슷한 여러 배열을 만들었고 하나의 역할에 대해 액세스를 허용/거부했지만 올바른 방법을 찾고 싶습니다.

답변

0

사실 나는 버그라고 생각합니다.

문제는 메뉴를 렌더링 할 때 하위 메뉴에 대한 '리소스'항목이 없어 졌기 때문입니다. 자신 만의 부분을 사용하여 문제를 해결할 수 있으며 서브 페이지의 'resource'- 항목을 다시 추가하십시오. - coure, 아주 더러운 해결책.

관련 문제