место в рейтинге
  • 68117
  • 223
  • 36
Нравится блог?
Подписывайтесь!

Zend Framework: создаем блог. Шаг 4

Доброго времени суток, братцы-зендфреймворковцы. Продолжаем шагать по пути создания блога на Zend Framework. Сегодня будет короткий, но крайне важный шажочек. Мы научимся создавать свои хелперы, т.е помощники видов.

 

Мы уже использовали некоторые стандартные хелперы, такие как baseUrl(), headTitle(). Давайте теперь напишем свой. Если взглянуть сейчас на наш блог, то можно заметить, что в списке постов и в отдельных постах, эти самые посты выводятся одинаково, т.е. полностью. Обычно в блогах на главной выводятся анонсы, а уже перейдя по ссылке можно прочитать пост полностью. Такое можно реализовать создав в БД два поля: анонс и полная версия. Затем для вида главной страницы выводить анонс, а для вида отдельно поста полную версию соответственно. Но я считаю ненужным создавать лишнее поле. Вместо этого мы будем использовать специальный тег для ката, эдакий хабракат или ювикат. Если тег указан - пост разделяется.

Для помощников видов в Zend Framework'е существует специальный каталог: application/views/helpers/. Хелперы обычно должны лежать там и соответствовать таким требованиям как:

 

  • Название класса хелпера должно заканчиваться названием хелпера и использовать CamelCase style.
  • Класс хелпера должен наследоваться от Zend_View_Helper_Abstract или реализовывать интерфейс Zend_View_Helper_Interface.
  • Хелпер должен иметь публичный метод, совпадающий с названием хелпера, но первая буква должна быть в нижнем регистре.

 

Давайте напишем наш первый хелпер, который, если существует специальный тег, будет обрезать и оставлять текст до него. Создаем в каталоге application/views/helpers/ файл Preview.php и пишем в него следующее:

 

  1. <?php
  2.  
  3. class Zend_View_Helper_Preview extends Zend_View_Helper_Abstract
  4. {
  5. /**
  6.   * Preview (text before cut)
  7.   *
  8.   * @param string $post Post
  9.   * @return string $preview Preview
  10.   */
  11. public function preview($post)
  12. {
  13. $post = str_replace('<p><!-- cut --></p>', '<!-- cut -->', $post);
  14. $preview = explode('<!-- cut -->', $post);
  15. $preview = $preview[0];
  16.  
  17. return $preview;
  18. }
  19. }

 

Как видно из кода, мы будем юзать тег <!-- cut --> для разделения. Теперь нужно задействовать наш хелпер во вью. Для этого в файле application/views/scripts/index/index.phtml находим строку вывода поста и оборачиваем в наш хелпер. Было:

 

  1. <?php echo $post->blog_post ?>

 

Стало:

 

  1. <?php echo $this->preview($post->blog_post) ?>

 

Как видите наш собственный хелпер вызывается точно также как и стандартные. Теперь все посты на главной выводятся до тега-разделителя. Если перейти по ссылке к отдельному посту, то он уже выведется полностью. Все хорошо, но если посмотреть исходный код, то можно увидеть наш тег-разделитель. В принципе это не так уж и важно, но все же лучше его убрать. Для этого напишем еще один хелпер, который будет искать этот тег и удалять. А вот и он (application/views/helpers/RemoveCutTag.php):

 

  1. <?php
  2.  
  3. class Zend_View_Helper_RemoveCutTag extends Zend_View_Helper_Abstract
  4. {
  5. /**
  6.   * Cut the post's separator
  7.   *
  8.   * @param string $post Post
  9.   * @return string
  10.   */
  11. public function removeCutTag($post)
  12. {
  13. if (!(strpos($post, '<!-- cut -->') === false)) {
  14. $post = str_replace('<p><!-- cut --></p>', '', $post);
  15. $post = str_replace('<!-- cut -->', '', $post);
  16. }
  17.  
  18. return $post;
  19. }
  20. }

 

Теперь также как и в первый раз, задействуем наш хелпер в виде для отдельного поста. Находим строку вывода поста и заменяем на:

 

  1. <?phpecho$this->removeCutTag($this->post['blog_post'])?>

 

Теперь в исходном коде страницы тега-разделителя не будет. Ну вообщем все. Вот так легко можно создавать и использовать свои хелперы. Исходники как всегда можно брать отсюда.

Следующий шаг теперь выйдет не скоро. Дело в том, что я уезжаю на обследование в Оренбург. Буду продолжать курс лечения в МНТК "Микрохирургия глаза". Отсутствовать буду ориентировочно две недели. Так что всем удачи, чао-какао, вообщем увидимся :).

Канат Гайлимов KanatGailimov
Мальчик-красавчик
19 февраля 2011, 14:52
1268

Загрузка...
Loading...

Комментарии

спасибо! все здорово:)
только ты забыл расширение - application/views/helpers/RemoveCutTag.php .Раньше в текстах ката не было. Достал из доков и обновил таблицу в БД.
удачи в Оренбурге!
Спасибо за пожелания :) Только вернулся :)

ЗЫ. Мда, капец я невнимательный, почти в каждом посте недочеты.
круто пишешь, афтар пиши есчо :)
спасибо) пока временно подзабил на ZF, будет время что-нить запощу :)

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

«Предатели Русского мира». Кто учит нас, какими буквами писать и чью культуру любить

«Предатели Русского мира». Кто учит нас, какими буквами писать и чью культуру любить

Истерический вой, поднявшийся в российских СМИ по поводу перевода казахского языка на латиницу, блогер и публицист из Казани Римзиль Валеев оценил довольно-таки точно, на наш взгляд.
openqazaqstan
18 апр. 2017 / 16:47
  • 32288
  • 232
Казахстан сидит на чемоданах. А некоторые из нас – непосредственно в них

Казахстан сидит на чемоданах. А некоторые из нас – непосредственно в них

Откуда я знаю, спросите вы? Да очень просто. Голые мужики в сауне могут врать только про баб. Про машины и планы переездов – только по-чесноку. Чего уж скрывать, если все остальное напоказ.
Lesch
17 апр. 2017 / 23:30
  • 6143
  • 23
«Сорри, коммерческая тайна». Ответ от ALTEL и Tele2

«Сорри, коммерческая тайна». Ответ от ALTEL и Tele2

Пресс-служба ALTEL и Tele2 предоставила ответы на наши вопросы по поводу сервисов, навязываемых ALTEL при наборе кодов проверки баланса от других операторов.
openqazaqstan
17 апр. 2017 / 15:26
  • 4623
  • 20
Как выбрать новостройку в Алматы: инсайты, критерии и личный опыт

Как выбрать новостройку в Алматы: инсайты, критерии и личный опыт

Я прекрасно понимаю тех, кто долго ищет подходящую квартиру - сама искала, потратила на поиск 1,5 года. Что, прежде всего, повлияло на мой выбор при покупке квартиры в новостройке Алматы?
Zhumanova
21 апр. 2017 / 10:04
  • 3123
  • 10
Депутат сената Айтимова: «Не нужно критиковать депутатов, так как вы сами их избирали»

Депутат сената Айтимова: «Не нужно критиковать депутатов, так как вы сами их избирали»

Наши депутаты известны не достижениями и работой, а своими высказываниями. Сегодня в СМИ вышла новость, где депутат сената Бырганым Айтимова ответила на критику народа.
tala03
20 апр. 2017 / 13:44
  • 2313
  • 17
Стихия всё спишет. Почему дамба за 200 миллионов никого не спасла?

Стихия всё спишет. Почему дамба за 200 миллионов никого не спасла?

Наводнение в Атбасаре, размытые дороги, подтопленные сёла по всему Центральному и Северному Казахстану... Что происходит?
openqazaqstan
19 апр. 2017 / 15:20
  • 2287
  • 14
«А ты покушала?» или Как завоевать сердце женщины простой заботой

«А ты покушала?» или Как завоевать сердце женщины простой заботой

Так как опыт хождения по свиданиям у меня немаленький, да и с интуицией давно дружу, я быстро отсеиваю тех, с кем будут проблемы. Как я это определяю? Очень просто.
Bonittta
вчера / 14:10
  • 2712
  • 93
Меня вывели из себя ученики 8 класса. Я осознала, что не хочу быть учителем

Меня вывели из себя ученики 8 класса. Я осознала, что не хочу быть учителем

Когда я пришла в первый раз на работу, слышала как доносятся крики из разных кабинетов. Крики это были не детей, а учителей, которые не могут сдержаться, когда уже все силы иссякли...
teacher1210
19 апр. 2017 / 7:56
  • 2406
  • 61
Чем меньше риск, тем меньше прибыль. Давайте зарабатывать больше, а я вам помогу

Чем меньше риск, тем меньше прибыль. Давайте зарабатывать больше, а я вам помогу

Если хотите жить как все казахстанцы, а казахстанцы в среднем живут очень бедно, то можете продолжать так же жить прежней жизнью, но если вы хотите жить лучше, чем вчера, надо заняться...
noyanovmyras
17 апр. 2017 / 17:02
  • 4668
  • 27