Содержание


Navigation Helpers


Navigation Helpers, ZF2


    .

Помощники навигации (navigation helpers) используются для рендеринга (rendering, отображение) элементов навигации из контейнера Zend\Navigation\Container.

 

На данный момент есть 5 дополнительных помощников:

1) Breadcrumbs– используется для построения пути к активной странице. Хлебный крошки.

2) Links– для создания заглавных ссылок навигации (<link rel="next" href="..." />).

3) Menu -  для создания и отображения меню.

4) Sitemap– для создания карты сайта, используя формат XML.

5) Navigation– используется для связи (proxying, прокси) с другими помощниками.

 

Все эти дополнительные помощники расширяют класс Zend\View\Helper\Navigation\HelperAbstract, который обеспечивает интеграцию с  ACL и translation (авто-перевод). Абстрактный класс реализует интерфейс Zend\View\Helper\Navigation\Helper, который определяет следующие методы:

 

1) getContainer() и setContainer() – получить и установить контейнеры для навигации, с которыми помощники должны работать по умолчанию. hasContainer()  -  проверяет, установлен ли контейнер.

2) getTranslator() и setTranslator() - получить и установить переводчик, используемый для перевод такста и заголовков. getUseTranslator() и setUseTranslator() – определяют где переводчик должен быть включен (использоваться). hasTranslator() -  проверяет, установлен ли (зарегестрирован ли) переводчик.

3) getAcl(), setAcl(), getRole() и setRole() - получает и устанавливает ACL(Zend\Permissions\Acl) экземпляр и роли (строка или Zend\Permissions\Acl\Role\RoleInterface). Используется для фильтрации содержимого страниц. getUseAcl() и setUseAcl() – проверяет, должен ли быть включен ACL. hasAcl() и hasRole() проверяют, установлены экземпляр ACL или назначены ли роли.

4)  __toString() – магический метод, проверющий, могут ли помощники быть выведены с помощью «echo» напрямую или нет.

5) render() -  должны быть реализованы конкретный помощники, что б рендеринг удался.


 В дополнение к методам заглушкам интерфейса, абстрактный класс также реализует следующие методы:

 

1) getIndent() и setIndent() - получает и устанавливает отступ. Setter принимает строку или целочисленное значение (Integer). Если передано число, то будет установлено соответствующее количество пробелов. Может использоваться со всеми попмощниками кроме Sitemap helper.

2) getMinDepth() и setMinDepth() - получает и устанавливает минимальную глубину страниц, которые должны быть включены в помощник. Установка NULL означает отсутствие минимальной глубины.

3) getMaxDepth() и setMaxDepth() - получает и устанавливает максимальную глубину страниц, которые должны быть включены в помощник. Установка NULL означает отсутствие максимальной глубины.

4) getRenderInvisible() и setRenderInvisible() -  получает и устанавливает элементы, помеченные как невидимые или видимые.

5) __call() – прокси функция для контейнера, зарегистрированного для помощника. Тоесть Вы можете вызывать помощник как контейнер. Пример ниже.

6) findActive($container, $minDepth, $maxDepth) -  используется для нахождения самой глубокой страницы в контейнере. Если не указать глубину, то будут использованы значения из getMinDepth() и getMaxDepth(). Самая глубокая страница должна находиться в пределах $minDepth и $maxDepth включительно. Возвращает массив, содержащий ссылки на найденные экземпляры страниц и глубины.

7) htmlify() -  рендерит HTML  элемент «а» из экземпляра Zend\Navigation\Page

8) accept() - используется для определения, если страница должна быть принята при переборе контейнеров. Проверяет видимость страницы и проверяет, что назначенные роли соответствуют правам доступа к ресурсам и привилегиям страницы.

9) Статический метод setDefaultAcl() – устанавливает объект ACL по-умолчанию, который должен использоваться помощниками.

10) Статический метод setDefaultRole() - – устанавливает ACL по-умолчанию, который должен использоваться помощниками.

 

Если контейнер не задано явно, помощник создаст пустой Zend\Navigation при вызове $helper->getContainer().

 

Прокси вызов контейнера навигации

Помощники видов Navigation используют магический метод __call() для прокси вызовов методов из контейнера навигации, зарегистрованного для помощника:

$this->navigation()->addPage(array(
    'type' => 'uri',
    'label' => 'New page'));

Этот вызов добавит страницу в контейнер помощника Navigation.


Автор статьи: DuB