2012-05-08 1 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') 
); 

休息のようなページを持つリソースは結構です。

関連する問題