2012-05-08 2 views
1

URI 페이지의 경우 Zend_NavigationZend_Acl을 독립형 (즉,이 ZF 라이브러리 만)으로 결합하려고합니다. 불행히도 일부 페이지를 보지 않는 역할을하는 경우에도 메뉴에서 볼 수 있습니다 (비록 내가 isAllowed로 전화하면 예상대로 작동합니다).URI의 페이지에 대한 Zend_Navigation 및 Zend_Acl

$pages = array (
    array('id' => '1', 'label' => 'page 1', 'uri' => '1.html', 'visible' => 1), 
    array('id' => '2', 'label' => 'page 2', 'uri' => '2.html', 'visible' => 1), 
    array('id' => '3', 'label' => 'page 3', 'uri' => '3.html', 'visible' => 1) 
); 

$nav = new Zend_Navigation($pages); 

$acl = new Zend_Acl(); 
$acl->addRole(new Zend_Acl_Role(1)); 
$acl->addRole(new Zend_Acl_Role(2)); 
$acl->addResource(new Zend_Acl_Resource(1)); 
$acl->addResource(new Zend_Acl_Resource(2)); 
$acl->addResource(new Zend_Acl_Resource(3)); 
$acl->allow(1, 1); 
$acl->allow(1, 2); 
$acl->allow(1, 3); 
$acl->allow(2, 1); 

// Role 1 sees 1,2,3 while Role 2 only 1 

$view = new Zend_View(); 

$menu = new Zend_View_Helper_Navigation_Menu(); 
$menu->setView($view) 
    ->setContainer($nav) 
    ->setTranslator($translate) 
    ->setAcl($acl)->setRole('2'); //tried both this or ->setAcl($acl) ->setRole('2'); 

echo "2 can't see 2 and 3, right? " . ((!$acl->isAllowed('2', '2'))?"right":"not right") . "\n"; 

echo $menu->menu()->renderMenu(
    null, 
    array(
     'minDepth' => 0, 
     'maxDepth' => 1, 
     'onlyActiveBranch' => false, 
     'renderParents' => true 
) 
); 

가 어떻게 위의 작업을 할 수 있습니다 : 내 문제를 표시하는 코드에 따라

? 감사!!

답변

1

연관이

$pages = array(
    array('id' => '1', ... , 'resource' => '1'), 
    array('id' => '2', ... , 'resource' => '2'), 
    array('id' => '3', ... , 'resource' => '3') 
); 

나머지 같은 페이지의 자원은 괜찮습니다.