Помощники видов в 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', ' alison@example.com '); $data[] = array('Bert', ' bert@example.com '); $data[] = array('Charlie', ' charlie@example.com ');
Вывод:
<?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
Новые статьи и публикации
- 2025-03-14 » SPF-запись
- 2025-03-07 » SEO на маркетплейсах: как оптимизировать карточку товара для поисковой выдачи
- 2025-02-18 » Топ-10 бесплатных нейросетей для генерации изображений: лучшие ии генераторы 2024 года
- 2025-02-11 » Критическая уязвимость в 1С-Битрикс
- 2025-02-11 » Google Search Console: руководство для начинающих вебмастеров
- 2025-02-11 » Методы измерения результативности рекламных кампаний: плюсы и минусы
- 2025-02-11 » Тренды SEO в 2025 году
- 2025-02-10 » Свой Google в локалке. Ищем иголку в стоге сена
- 2025-01-29 » SEO — это комплексная работа. Шесть главных факторов ранжирования сайтов
- 2025-01-29 » Гайд для главной страницы e-commerce сайта: как оформить, чтобы повысить конверсию
- 2025-01-20 » Krea AI выпустила бесплатную функцию преобразования изображений в 3D-объекты — их можно вращать и вписывать в фотографии
- 2025-01-19 » Отзывы на Яндекс Картах: как пройти модерацию
- 2025-01-15 » Топ-6 лучших российских нейросетей, в которых можно генерировать тексты и изображения бесплатно и без VPN
- 2025-01-14 » 15 бесплатных способов узнать, чем интересуется ваша аудитория
- 2025-01-11 » Бездепозитные бонусы в казино за регистрацию с выводом: особенности и возможности получения
- 2025-01-09 » Новая модель LAM способна выполнять задачи в Word
- 2024-12-26 » Универсальный промпт для нейросети: как выжать максимум из ChatGPT, YandexGPT, Gemini, Claude в 2025
- 2024-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
Неудача — это не единичное внезапное событие. Ваш провал не возникает внезапно. Напротив, неудача появляется, когда вы совершаете одни и те же ошибки изо дня в день. Джим Рон |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.
Или напишите нам в WhatsApp
Или напишите нам в WhatsApp