В настоящее время я использую вместе Zend_acl и Zend_Navigation в моем проекте, и, похоже, он работает правильно. Тем не менее, я использую на своем сайте большое количество ajax и сделал вход в систему с помощью jqModal и jQuery, которые регистрируют пользователей без перезагрузки текущей страницы и также нуждаются в перезагрузке навигации. Я до сих пор заставил это работать, но возвращаемая навигация - все ссылки с видимым полем как истина, которая является неправильной. Например, когда я вошел как пользователь, ссылка для входа не должна быть видна.
Любая помощь будет оценена. Мой код ниже для действий, функции JavaScript и Json вернулся.
=============================================== ========
текущая роль = администраторы
// ДЕЙСТВИЕ КОНТРОЛЛЕРА
публичная функция getnavigationjsonAction ()
{
// $ view-> навигация ($ контейнер) -> SetACL ($ это -> _ ACL) -> setRole (Zend_Registry :: получить ( 'роль'));
// echo $ this-> navigation () -> menu ();
$ navigation = $ this-> getView () -> navigation () -> setAcl ($ this -> _ acl) -> setRole (Zend_Registry :: get ('role'));
// умереть (Zend_Registry :: получить ( 'роль'));
// матрица ($ это -> _ ACL);
$ Это -> _ helper-> JSON ($ навигационно> ToArray ());
}
// ФУНКЦИЯ JAVASCRIPT
функция reloadNavigationMenu ()
{
// alert ('перезагрузка навигации');
$ .ajax ({
url: "/ default / ajax / getnavigationjson",
тип: "POST",
кеш: ложь,
асинхронный: ложный,
данные: "формат = json",
success: function (data) {
var html = '';
console.log (данные);
$. Каждый (данные, функция (i) {
if (data [i] .visible === true) {
//console.log(data[i]);
HTML + = '
';
HTML + = '' + данные [я] .label + '';
HTML + = '';
}
});
HTML + = '';
. $ ( '# Zend_navigation_container') HTML (HTML);
}
});
}
// ВОЗВРАТ данных JSON с контроллера
[{"action": "index",
«активный»: ложь,
"класс": ноль,
«контроллер»: «админ»,
"id": ноль,
"label": "Административная секция",
«модуль»: «админ»,
"заказ": ноль,
"страницы": [],
"params": [],
"привилегия": "индекс",
"rel": [],
"reset_params": правда,
"ресурс": "админ: админ",
"rev": [],
«маршрут»: ноль,
«цель»: ноль,
"title": ноль,
"type": "Zend_Navigation_Page_Mvc",
«видимый»: правда
},
{"action": "index",
«активный»: ложь,
"класс": ноль,
«контроллер»: «индекс»,
"id": ноль,
"label": "Home",
«модуль»: «по умолчанию»,
"заказ": ноль,
"страницы": [],
"params": [],
«привилегия»: ноль,
"rel": [],
"reset_params": правда,
«ресурс»: ноль,
"rev": [],
«маршрут»: ноль,
«цель»: ноль,
"title": ноль,
"type": "Zend_Navigation_Page_Mvc",
«видимый»: правда
},
{"action": "index",
«активный»: ложь,
"класс": ноль,
«контроллер»: «индекс»,
"id": ноль,
«label»: «Новости»,
«модуль»: «новости»,
"заказ": ноль,
"страницы": [],
"params": [],
"привилегия": "индекс",
"rel": [],
"reset_params": правда,
"ресурс": "новости: индекс",
"rev": [],
«маршрут»: ноль,
«цель»: ноль,
"title": ноль,
"type": "Zend_Navigation_Page_Mvc",
«видимый»: правда
},
{"action": "index",
«активный»: ложь,
"класс": ноль,
«контроллер»: «индекс»,
"id": ноль,
"label": "Tutorials",
«модуль»: «учебники»,
"заказ": ноль,
"страницы": [],
"params": [],
"привилегия": "индекс",
"rel": [],
"reset_params": правда,
"resource": "tutorials: index",
"rev": [],
«маршрут»: ноль,
«цель»: ноль,
"title": ноль,
"type": "Zend_Navigation_Page_Mvc",
«видимый»: правда
},
{"действие": "о",
«активный»: ложь,
"класс": ноль,
«контроллер»: «индекс»,
"id": ноль,
"label": "About",
«модуль»: «по умолчанию»,
"заказ": ноль,
"страницы": [],
"params": [],
«привилегия»: «о»,
"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 ": []," route ": 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, "type": "Zend_Navigation_Page_Mvc", "visible": true}, {"action": "login", "активный ": 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}, {"action": "logout", "active": false, "class": null,"controller": "auth", "id": null, "label": "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}]
Это когда я вошел в систему как администратор, и ссылки для входа должны быть скрыты, но это не так.Похоже, что ACL не назначен для навигации должным образом.