Как создать свой helper в Zend Framework v1
В некоторых ситуациях для того чтобы избежать повторного использования кода в темплейтах — существует необходимость создания так называемого хелпера. Хелперы можно вызывать внутри темплейта как обычные функции передавая им нужные параметры. Как это сделать — читайте дальше…
Создаем свой хелпер
Для начала нам нужно создать класс основаный на абстрактном классе Zend_View_Helper_Abstract.
class My_Helper_SearchQuery extends Zend_View_Helper_Abstract { public function searchQuery($str,$query) { return preg_replace("/".$query."/i", "<span style='color:red;font-weight:bold'>".$query."</span>", $str); } }
В примере кода выше — красным выделен префикс хелпера (это важно в дальнейшем) а синим выделено имя хелпера. В свою очередь зеленым выделено имя функции которое соответствует имени хелпера но написана в стиле camelCase где первый мисвол всегда строчный. Это тоже важно потому что именно эту функцию будет искать Zend.
В данно случае это хелпер который выделяет красным жирным шрифтом подстроку. Хелпер используется для вывода результатов поиска.
Регистрируем хелпер в файле конфигурации (application.ini)
Для того чтобы хелпер был доступен в любом View его нужно добавить в файл конфигурации приложения. В нашем случае это выглядит так:
resources.view[] = resources.view.helperPath.My_Helper = APPLICATION_PATH "/modules/default/views/helpers"
Как вы видите тут используется только префикс хелпера. В данном случае система будет искать хелперы с префиксом My_Helper по указаному пути. Что даст возможность создавать любое количество хелперов в этой директории и они автоматически будут доступны во всех темплейтах.
Вызов хелпера в темплейте (.phtml)
Выглядит это так:
<!-- html code --> <?php echo $this->searchQuery('This is a full string of text','full') ?> <!-- html code -->
Результат работы хелпера должен выглядеть вот так:
<!-- html code -->
This is a full string of text
<!-- html code -->