Здравствуйте, сегодня я хочу рассказать Вам о написании помощников вида. Мне нужно было реализовать один очень важный элемент навигации – т.н. "Хлебные крошки" вертикального типа (самый простой вариант). Для написания подобного функционала, я решил воспользоваться помощниками вида, чтобы не морочится с выводом и интеграцией в мою CMS-систему. Заодно я подумал, что было бы неплохо рассказать об этом читателям…
Проблема
Как предоставить пользователю удобный элемент навигации "Breadcrumbs" не нарушая целостность уже готовой системы? Как добавить подобный функционал, с минимальными изменениями в текущем проекте? Как писать помощники вида?
Решение
Решение подобного вопроса довольно тривиальное. Самым лучшим способом, на моё мнение, является написание соответствующего помощника вида, потому, что это самый грамотный вариант (ИМХО). Итак, приступим!
В первую очередь, выясним, что же такое помощник вида в Zend Framework, как их использовать и как дописывать свои помощники.
Помощник вида – это «плагин» Zend_View, который доступен прямо из скриптов вида, реализующий конкретный функционал.
Наиболее полезными помощниками вида я считаю помощников headTitle, headLink, headScript, headMeta. Я их использую наиболее часто. Обо всех этих помощниках можно прочитать в мануале, а у нас же своя задача…
По умолчанию, Zend_View ищет помощники в папке Zend/View/Helper/, а также в папке views/helpers/. А что делать, если нам нужно хранить наши помощники не в этих папках и чтобы они были доступны из любого скрипта вида? Правильно! Нужно показать нашу папку Zend_View. Делается это так:
Вот сам класс плагина, реализующий "Хлебные крошки":
Итак, разберем пошагово, написанное.
- В первых строчках мы объявили класс Fooup_View_Helper_BreadCrumbs, унаследовав класс Zend_View_Helper_Placeholder_Container_Standalone (этот класс наследует интерфейс Zend_View_Helper_Interface и имеет базовый функционал необходимый нам);
- Далее мы объявляем защищенную переменную $_regKey, которая указывает Placeholder'у название отдельного пространства имен для нашего плагина;
- Объявляем функцию breadCrumbs, которая будет основной в нашем помощнике;
- И наконец, объявляем функцию toString, которая должна возвращать уже готовую строку для вывода.
Функция breadCrumbs принимает два параметра: первый это элемент (массив с ключами «title» и «url»), а второй, означает тип записи в контейнер (заменить, добавить в конец, добавить в начало). Эта функция выполняется благодаря базовому функционалу помощника под названием "Placeholder". Заметьте, что функция имеет такое же название как и помощник вида. Это и является ключевым моментом - это обязательно!
Функция toString, формирует наш вывод, собирая строку с массива элементов, вставляя разделители, префиксы и постфиксы. В итоге функция возвращает строку, которая уже готова для вывода.
Наведу Вам небольшой пример использования данного помощника:
Обратите внимание на название помощника. Оно формируется на основе части имени класса, но без префикса, который мы указали виду.
Как видите, все довольно просто и эффективно. Такой подход очень удобен и грамотен, ведь если бы мы выдумывали какие-то другие системы и решения, то на это ушло бы намного больше времени, да и Zend_View рассчитан на удобное наращивание функционала. А вот результат выполнения подобного кода:
![]()




