我目前一直在我的项目中同时使用 zend_acl 和 Zend_Navigation,它似乎工作正常。我是如何在我的网站中使用大量 ajax 并使用 jqModal 和 jQuery 登录的,这些登录用户无需重新加载当前页面并且还需要重新加载导航。到目前为止,我已经让它工作了,但是返回的导航是所有可见字段为 true 的链接,这是不正确的。例如,当我以用户身份登录时,登录链接不应该是可见的。
任何帮助,将不胜感激。我在下面的 Action、JavaScript 函数和 Json 代码返回。
==================================================== ===== 当前角色 = 管理员
// 控制器动作
public function getnavigationjsonAction() { //$view->navigation($container)->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); // echo $this->navigation()->menu(); $navigation = $this->getView()->navigation()->setAcl($this->_acl)->setRole(Zend_Registry::get('role')); //die(Zend_Registry::get('role')); //死($this->_acl); $this->_helper->json($navigation->toArray()); }
// 脚本函数
function reloadNavigationMenu() { //alert('重新加载导航'); $.ajax( { url : "/default/ajax/getnavigationjson", type : "POST", cache : false, async : false, data : "format=json", success : function(data) { var html='' ; 控制台.log(数据);
$.each(data, function(i) { if(data[i].visible === true) { //console.log(data[i]); html+='
}
// 从控制器返回 JSON 数据
[ {“action”:“index”,“active”:false,“class”:null,“controller”:“admin”,“id”:null,“label”:“Admin Section”,“module”:“ admin”,“order”:null,“pages”:[],“params”:[],“privilege”:“index”,“rel”:[],“reset_params”:true,“resource”:“admin :admin", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "索引”,“活动”:假,“类”:空,“控制器”:“索引”,“id”:空,“标签”:“主页”,“模块”:“默认”,“订单”:空,“页面”:[],“参数”:[], “特权”:null,“rel”:[],“reset_params”:true,“resource”:null,“rev”:[],“route”:null,“target”:null,“title”:null, “类型”:“Zend_Navigation_Page_Mvc”,“可见”:真 },{ “动作”:“索引”,“活动”:假,“类”:空,“控制器”:“索引”,“id”:空, “标签”:“新闻”,“模块”:“新闻”,“订单”:null,“页面”:[],“参数”:[],“特权”:“索引”,“rel”:[],“reset_params”:true,“资源”:“新闻” :index", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : " index”,“active”:false,“class”:null,“controller”:“index”,“id”:null,“label”:“Tutorials”,“module”:“tutorials”,“order”:null ,“页面”:[],“参数”:[],“privilege”:“index”,“rel”:[],“reset_params”:true,“resource”:“tutorials:index”,“rev”:[],“route”:null,“target”:null,“标题”:空,“类型”:“Zend_Navigation_Page_Mvc”,“可见”:真},{“动作”:“关于”,“活动”:假,“类”:空,“控制器”:“索引”,“ id”:null,“label”:“关于”,“module”:“default”,“order”:null,“pages”:[],“params”:[],“privilege”:“about”,“相对”:[],“reset_params”:真,“资源”:“默认:索引”,“rev”:[],“路由”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true },{ “action”:“comments”,“active”:false,“class”:null,“controller”:“index”,“id”:null,“label”:“Comments”,“module”:“default”, “order”:null,“pages”:[],“params”:[],“privilege”:“comments”,“rel”:[],“reset_params”:true,“resource”:“default:index” , "rev" : [ ], "route" : null,“目标”:空,“标题”:空,“类型”:“Zend_Navigation_Page_Mvc”,“可见”:真},{“动作”:“索引”,“活动”:假,“类”:空,“控制器" : "contact", "id" : null, "label" : "Contact", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege ":"index","rel":[],"reset_params":true,"resource":"default:contact","rev":[],"route":null,"target":null,"title “:空,”类型“:”Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "login", "active" : false, "class" : null, "controller" : "auth", "id" : null, "label" : "登录”,“模块”:“默认”,“订单”:null,“页面”:[],“参数”:[],“特权”:“登录”,“rel”:[],“reset_params”: true,“resource”:“default:auth”,“rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }, { "动作" : "注销",“active”:false,“class”:null,“controller”:“auth”,“id”:null,“label”:“注销”,“module”:“default”,“order”:null,“pages” “:[],“参数”:[],“特权”:“注销”,“rel”:[],“reset_params”:true,“资源”:“默认:auth”,“rev”:[], “路线”:空,“目标”:空,“标题”:空,“类型”:“Zend_Navigation_Page_Mvc”,“可见”:真}]注销”,“模块”:“默认”,“订单”:null,“页面”:[],“参数”:[],“特权”:“注销”,“rel”:[],“reset_params”: true,“resource”:“default:auth”,“rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]注销”,“模块”:“默认”,“订单”:null,“页面”:[],“参数”:[],“特权”:“注销”,“rel”:[],“reset_params”: true,“resource”:“default:auth”,“rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]rev”:[],“route”:null,“target”:null,“title”:null,“type”:“Zend_Navigation_Page_Mvc”,“visible”:true }]
这是我当前以管理员身份登录的时候,登录链接应该被隐藏但它不是。看起来 ACL 没有正确分配给导航。