【发布时间】:2012-10-19 09:47:07
【问题描述】:
我希望 Navigation 仅显示 Acl 允许的项目,但我在将 Navigation 与 Acl 链接时遇到问题 - 当我这样做时,就像互联网上的 official example 或 some other resources 中显示的那样,我的导航仍然显示所有像没有 Acl 的项目。
在引导程序中,我正在做:
$view->navigation()->setContainer($container);
$view->navigation()->setAcl($acl)->setRole("1");
地点:
- $view 是 Zend_View 对象
- $container 是 Zend_Navigation 对象
- $acl 是 Zend_Acl 对象
我已经按原样设置了初始导航数组,acl 和导航对象看起来也很好,并且包含了它们应该包含的内容,所以我不打算在这里发布它们。
目前我们使用以下结构使其工作:
if(!$acl->isAllowed(/* auth data, controller, action */)) {
unset(/* this page from pages array */);
}
但这一点也不漂亮,也不像官方示例中的单线。
我的问题是我最可能遇到的问题是什么?开发人员在结合 Zend_Navigation 和 Zend_Acl 时最常见的问题和错误是什么?
也许我可以从中找到解决方案,这可以帮助其他遇到此问题的开发人员。
【问题讨论】:
-
其他问题是关于 setRole("1") - 目前我将角色的 id 传递给它,因为角色数组仅包含 id。这是 setRole() 的正确用法吗?
标签: php zend-framework zend-navigation zend-acl