Помощники видов в Zend Framework
Настало время немного разъяснить, что представляют из себя помощники видов в Zend Framework. Zend Framework предоставляет компоненту Zend_View, которая позволяет создавать помощники видов. Их использование выглядит примерно так:
<?php echo $this->myHelper('myParam1'); ?>
А сам помощник вида примерно вот так:
<?php class Zend_View_Helper_MyHelper extends Zend_View_Helper_Abstract { public function myHelper($myParam1) { $html = ''; // some logic that fills in $html. return $html; } }
Тут необходимо отметить две детали. Первая это то, что любой помощник выводит строку. Вторая, то, что Zend_View_Helper_ это префикс.
В стандартной комплектации проекта на Zend Framework данные помощники видов размещаются в специальном каталоге под названием helpers->views. Так же каталог helpers может находиться в папке layouts. Если вы помещаете помощник видов в один из этих каталогов, то префикс будет следующим Zend_View_Helper_.
Но это не строгое ограничение - мы можем располагать наших помощников в любой папке. Обычно разработчики хранят их в папке library/App/View/Helper/, так что префикс App_View_Helper_ тут уже не сработает. Для того, чтобы всё было пучком следует добавить запись в application.ini:
resources.view.helperPath.App_View_Helper_ = "App/View/Helper/"
Теперь помощники видов располагаются в App/View/Helper/MyHelper.php и выглядят следующим образом:
<?php class App_View_Helper_MyHelper extends Zend_View_Helper_Abstract { public function myHelper($myParam1) { $html = ''; // some logic that fills in $html. return $html; } }
После того, как вы наследуете от класса Zend_View_Helper_Abstract для создания собственного хелпера, то вам надо получить доступ к объекту вида. Это необходимо для того, чтобы получать доступ к другим помощникам вида, таким как к примеру escape.
Допустим, мы хотим создать таблицу из массива, который выглядит следующим образом:
$data = array(); $data[] = array('Name', 'Email'); $data[] = array('Alison', ' Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript '); $data[] = array('Bert', ' Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript '); $data[] = array('Charlie', ' Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript ');
Вывод:
<?php echo $this->tabulate($this->data, array('class'=>'tabulated')); ?>
А сам помощник вида будет выглядеть так:
<?php class App_View_Helper_Tabulate extends Zend_View_Helper_Abstract { public function tabulate ($data, $attribs = array()) { $attribString = ''; foreach ($attribs as $key => $value) { $attribString .= ' ' . $key .'="' . $value . '"'; } $header = array_shift($data); $html = "<table $attribString>\n<tr>\n"; foreach ($header as $cell) { $escapedCell = $this->view->escape($cell); $html .= "<th>$escapedCell</th>\n"; } $html .= "</tr>\n"; foreach ($data as $row) { $html .= "<tr>\n"; foreach ($row as $cell) { $escapedCell = $this->view->escape($cell); $html .= "<td>$escapedCell</td>\n"; } $html .= "</tr>\n"; } $html .= '</table>'; return $html; } }
Напоследок хочу напомнить, что префиксы можно задавать какие угодно:
resources.view.helperPath.Akrabat_View_Helper_ = "Akrabat/View/Helper/" resources.view.helperPath.App_View_Helper_ = "App/View/Helper/"
Так же старайтесь давать уникальные имена вашим помощникам иначе они могут быть перезаписаны и не вызываться там, где вы этого ожидаете. Ну и наоборот. Если вас не устраивает встроенные хелперы в Zend Framework, то вы всегда можете заместить их своими собственными.
Источник: http://feedproxy.google.com/~r/ruseller/CdHX/~3/rZdNP3ys5B0/lessons.php
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-04-22 » Комментирование кода и генерация документации в PHP
- 2024-04-22 » SEO в России и на Западе: в чем основные отличия
- 2024-04-22 » SEO для международного масштабирования
- 2024-04-22 » Как использовать XML-карты для продвижения сайта
- 2024-04-22 » Цифровой маркетинг: инструменты для продвижения и рекламы в 2024 году
- 2024-04-22 » Что такое CSS-модули и зачем они нам?
- 2024-04-17 » 23 сервиса для эффективного экспресс-аудита любого сайта
- 2024-04-08 » Яндекс переходит на новую версию Wordstat
- 2024-04-08 » Яндекс интегрировал в свой облачный сервис эмпатичную нейросеть
- 2024-04-08 » Новая версия нейросети Claude превзошла по мощности аналоги Google и OpenAI
- 2024-04-08 » Как пользоваться GPT 4 и Claude бесплатно и без VPN
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
Сейчас только тот является менеджером, кто заставляет знания работать. |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.