У меня работает Zend_Navigation с данными, предоставленными файлом navigation.xml.Давайте предположим, что первый уровень (0) состоит из двух страниц, Frontend и Backend.Внешний интерфейс доступен для гостевой роли, а внутренний - только для роли администратора.
Если я
<?php echo $this->navigation()->menu()->setMaxDepth(0); ?>
, он корректно отображает ссылку "Внешний интерфейс", когда не вошел в систему, и обаСсылки «Frontend» и «Backend» при входе в систему с правами администратора.
Однако отображение ссылки «Frontend» не имеет особого смысла для гостей, поскольку у них нет других страниц для перехода кна этом уровне в любом случае.Так что я бы предпочел не показывать эту навигацию для гостей.
Я знаю, что мог бы сделать
<?php
if ('guest' !== $this->view->role) {
echo $this->navigation()->menu();
}
?>
, но я надеюсь, что лучший способ сделать это.
Я ищу что-то вроде
<?php
if (count($this->navigation()->getPagesForRole($this->view->role)) > 1) {
echo $this->navigation()->menu();
}
?>
Я не могу понять, как этого добиться с помощью API, предоставляемого Zend_Navigation ... Я вижу, что есть метод getPages (), ноон возвращает все страницы «нефильтрованными».
Я предполагаю, что есть простое решение, но я пытался выяснить это в течение последних двух часов и ничего не нашел, так что, думаю, я ищув неправильном направлении.
Спасибо за ваше время.
Редактировать:
Я забыл упомянуть, что навигация уже использует ACL для управления привилегиямии работает нормально.Моя единственная проблема в том, что я не хочу отображать навигацию Frontend / Backend для гостей, потому что навигация только по одному элементу ссылки довольно бесполезна.Извините за путаницу.