0

我希望 Navigation 仅显示 Acl 允许的项目,但我在将 Navigation 与 Acl 链接时遇到问题 - 当我这样做时,就像在官方示例或Internet 上的其他一些资源中显示的那样,我的导航仍然显示所有项目,例如没有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 时最常见的问题和错误是什么?

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

4

1 回答 1

1

我有一个建议。为什么你不能为此编写一个视图助手(使用模块、控制器、动作作为参数)?在那个视图助手中你可以检查访问。

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

这是你想要的?

于 2012-10-20T11:23:57.890 回答