<Mr.ElectroNick>
/* personal website */

Как создать свой 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 -->