【问题标题】:Linking Zend_Acl with Zend_Navigation将 Zend_Acl 与 Zend_Navigation 链接
【发布时间】:2012-10-19 09:47:07
【问题描述】:

我希望 Navigation 仅显示 Acl 允许的项目,但我在将 Navigation 与 Acl 链接时遇到问题 - 当我这样做时,就像互联网上的 official examplesome 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


【解决方案1】:

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

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

这是你要找的吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 2019-02-18
    • 2018-04-13
    • 2011-04-18
    • 2014-09-19
    相关资源
    最近更新 更多