【问题标题】:zend navigation partial with acl not working带有acl的zend导航部分不起作用
【发布时间】:2012-01-04 22:48:05
【问题描述】:

我在导航和 acl 方面遇到了一些问题,说菜单中的权限不受尊重。 我有一个带有菜单的 xml 配置文件。在我的引导程序中,我将菜单初始化如下:

    protected function _initNavigationXml() {
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();
    $config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml');

    $navigation = new Zend_Navigation($config);
    $view->navigation($navigation)->setAcl($this->_acl)->setRole($this->_auth->getIdentity()->role);
}

由于菜单的特殊格式,我必须将其显示在部分 phtml 文件中,例如:

<?php
$partial = array('sidemenu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial);
echo $this->navigation()->menu()->renderPartial();
?>

菜单显示良好,但资源没有得到尊重。

添加关注

echo $this->navigation()->menu()->renderMenu();

$partial 之前,菜单正确,资源得到尊重。

任何帮助或进一步的问题将不胜感激;)
问候
安德烈亚

【问题讨论】:

    标签: zend-framework navigation acl


    【解决方案1】:

    renderMenu() 方法包含用于检查在您设置的 ACL 权限下页面是否可见的代码。据我所知,如果您使用的是renderPartial(),则需要自己处理 ACL 检查。

    【讨论】:

    • 谢谢你的回答,这似乎不合逻辑,但我读到 acl 在 renderPartial 中丢失了......你有一个例子说明如何在控制器中执行此操作,因为我需要菜单仅在我的应用程序的仪表板中?问候
    • 查看Zend_View_Helper_Navigation_Menu-&gt;renderMenu() 的代码可能最容易,它调用_renderMenu(),然后使用Zend_View_Helper_Navigation_HelperAbstract-&gt;accept() 来检查是否应该显示页面。
    • @ChrisAnstey +1 谢谢,您的回复帮助了我很多,用 ACL 构建 renderPartial 方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2016-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多