我正在使用 Zend Acl 和 Zend Navigation。我正在引导程序中设置导航。如果用户无权访问资源,我正在尝试不显示链接。我已经阅读了几个教程,多次阅读了 zend 参考手册,但是导航中的所有链接仍然出现在访客用户中,尽管有些应该只显示给管理员用户
protected function _initNavigationMenu()
{
$this->bootstrap("layout");
$layout = $this->getResource('layout');
$view = $layout->getView();
$navigation_model = new Core_Model_Navigation();
$result = $navigation_model->getTopLevelNavigationLinksForDisplay();
$sanitized = $navigation_model->sanatizeNavigationForDisplay($result);
$config = new Zend_Config($sanitized);
$nav = new Zend_Navigation($config);
$view->navigation($nav)
->setAcl($this->_acl->acl())
->setRole((string)BW::user() -> role);
}
所有 ACL 角色和资源以及导航都来自数据库,以防万一
这是由$sanitized创建的数组
Array
(
[0] => Array
(
[parent_id] => 0
[label] => File Manager
[order] => 1
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[module] => file
[reset_params] => 1
[id] => fileManagerLink
)
[1] => Array
(
[parent_id] => 0
[label] => Upload
[title] => Upload a file
[order] => 2
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[controller] => upload
[module] => file
[reset_params] => 1
[id] => fileManagerUploadLink
)
[2] => Array
(
[parent_id] => 0
[label] => Files
[title] => Manage your files
[order] => 3
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[controller] => manage
[module] => file
[reset_params] => 1
[id] => FileManagerFilesLink
)
[3] => Array
(
[parent_id] => 0
[label] => Contacts
[order] => 4
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[controller] => contact
[module] => file
[reset_params] => 1
[id] => Contacts
)
[4] => Array
(
[parent_id] => 0
[label] => My Account
[title] => Your Account
[order] => 5
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => index
[controller] => user
[reset_params] => 1
[id] => myAccountNavigationLink
)
[5] => Array
(
[parent_id] => 0
[label] => Admin
[title] => The administration panel
[order] => 6
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[module] => admin
[reset_params] => 1
[id] => Administration
)
[6] => Array
(
[parent_id] => 0
[label] => Test for ACL
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[7] => Array
(
[parent_id] => 0
[label] => Test for ACL
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[8] => Array
(
[parent_id] => 0
[label] => Test for ACL
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[9] => Array
(
[parent_id] => 0
[label] => Test for ACL
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[10] => Array
(
[parent_id] => 0
[label] => ACL Test
[order] => 0
[resource] => 8
[privilage] => index
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[11] => Array
(
[parent_id] => 0
[label] => Joey
[order] => 0
[resource] => adminIndexIndex
[privilage] => index
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[12] => Array
(
[parent_id] => 0
[label] => another test
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[13] => Array
(
[parent_id] => 0
[label] => another test
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[14] => Array
(
[parent_id] => 0
[label] => another test
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[15] => Array
(
[parent_id] => 0
[label] => another stupid test
[order] => 0
[resource] => Admin Homepage
[privilage] => index
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
[16] => Array
(
[parent_id] => 0
[label] => another stupid test
[order] => 0
[resource] => 9
[active] => 1
[visible] => 1
[internal_page] => 1
[action] => add-navigation
[controller] => manage
[module] => admin
[reset_params] => 1
)
)