将zend_acl与zend_navigation链接



我希望导航仅显示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来检查访问并转发到操作。

这是您要寻找的吗?

最新更新