Я хочу, чтобы в навигации отображались только элементы, разрешенные Acl, но у меня возникают проблемы с связыванием навигации с Acl - когда я это делаю, как показано в официальный пример или некоторые другие ресурсы в Интернете, моя навигация по-прежнему показывает все элементы, как и без Acl.
В Bootstrap я делаю:
$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?
Возможно, я смогу найти решение среди них, и это поможет другим разработчикам, у которых возникают проблемы с этой проблемой.