将Zend_Acl与Zend_Navigation链接

时间:2012-10-19 09:47:07

标签: php zend-framework zend-navigation zend-acl

我希望导航只显示Acl允许的项目,但我在导航与Acl之间存在问题 - 当我这样做时,就像它显示在互联网上的official examplesome other resources一样,我的导航仍显示所有项目,如没有Acl。

在Bootstrap中,我正在做:

$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结合使用时最常见的问题和错误是什么?

也许我可以在这些中找到解决方案,这可以帮助其他开发人员解决此问题。

1 个答案:

答案 0 :(得分:1)

我有个建议。为什么不能为此编写视图助手(使用模块,控制器,操作作为参数)?在该视图助手中,您可以检查访问权限。

因此,您可以使用viewhelper检查访问权限并转发操作,而不是简单地重定向。

这是你在找什么?