現在、自分のプロジェクトで zend_acl と Zend_Navigation を一緒に使用していますが、正しく動作しているようです。私は自分のサイトで多くの ajax を使用しており、現在のページをリロードせずにユーザーをログインさせる jqModal と jQuery を使用してログインし、ナビゲーションもリロードする必要があります。これまでのところ動作していますが、ナビゲーションが返されるのは、表示フィールドが true のすべてのリンクであり、これは正しくありません。たとえば、ユーザーとしてログインしている場合、ログイン リンクは表示されません。
どんな助けでも大歓迎です。以下のアクション、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')); //die($this->_acl); $this->_helper->json($navigation->toArray()); }
// ジャバスクリプト関数
function reloadNavigationMenu() { //alert('reloading navigation'); $.ajax( { url : "/default/ajax/getnavigationjson"、type : "POST"、cache : false、async : false、data : "format=json"、success : function(data) { var html='' ; console.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" : "インデックス」、「アクティブ」: false、「クラス」: null、"controller" : "index", "id" : null, "label" : "Home", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : null, "rel" : [ ], "reset_params" : true, "resource" : null, "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "index", "active" : false, "class" : null, "controller" : "index", "id" : null, "ラベル": "ニュース", "モジュール": "news", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : "index", "rel" : [ ], "reset_params" : true, "resource" : "news :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 、「ページ」: []、「パラメータ」: []、"特権": "インデックス"、"rel": []、"reset_params": true、"resource": "tutorials:index"、"rev": []、"route": null、"target": null、" title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "about", "active" : false, "class" : null, "controller" : "index"," id" : null, "label" : "About", "module" : "default", "order" : null, "pages" : [ ], "params" : [ ], "privilege" : "about"," rel" : [ ]、"reset_params" : true、"resource" : "default:index", "rev" : [ ], "route" : 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」:[]、「ルート」:null、"target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "index", "active" : false, "class" : null, "controller " : "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 ": null、"タイプ":"Zend_Navigation_Page_Mvc", "visible" : true }, { "action" : "login", "active" : false, "class" : null, "controller" : "auth", "id" : null, "label" : " Login"、"module" : "default"、"order" : null、"pages" : [ ]、"params" : [ ]、"privilege" : "login"、"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" : "Logout"、"module" : "default"、"order" : null、"pages " : [ ], "params" : [ ], "privilege" : "ログアウト", "rel" : [ ], "reset_params" : true, "resource" : "default:auth", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]Logout"、"module" : "default"、"order" : null、"pages" : [ ]、"params" : [ ]、"privilege" : "logout"、"rel" : [ ]、"reset_params" : true, "resource" : "default:auth", "rev" : [ ], "route" : null, "target" : null, "title" : null, "type" : "Zend_Navigation_Page_Mvc", "visible" : true } ]Logout"、"module" : "default"、"order" : null、"pages" : [ ]、"params" : [ ]、"privilege" : "logout"、"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 がナビゲーションに適切に割り当てられていないようです。