我希望导航仅显示ACL允许的项目,但是我在链接导航与ACL时遇到问题 - 当我这样做时,就像在官方示例或其他资源中显示的那样互联网,我的导航仍然显示所有物品,例如没有ACL。
在引导程序中,我正在做:
$view->navigation()->setContainer($container);
$view->navigation()->setAcl($acl)->setRole("1");
其中:
- $ view是zend_view对象
- $容器是zend_navigation对象
- $ acl是zend_acl对象
我有必要的初始导航阵列,ACL和导航对象看起来还不错并包含它们应包含的内容,因此我不会在此处发布它们。
目前我们使用以下结构来工作:
if(!$acl->isAllowed(/* auth data, controller, action */)) {
unset(/* this page from pages array */);
}
,但这根本不是很漂亮,在官方示例中都不喜欢单线。
我的问题是,在这里我的问题很可能是什么?开发人员在将zend_navigation与zend_acl相结合时犯了哪些通常的问题和错误?
也许我可以在这些问题之间找到解决方案,这可以帮助其他在此问题上遇到问题的开发人员。
我有一个建议。为什么不能为此编写视图助手(使用模块,控制器,作为参数的操作)?在该视图助手中,您可以检查访问。
因此,您可以使用ViewHelper来检查访问并转发到操作。
这是您要寻找的吗?