14 Апрель 2011

PHP видеоурок. Часть 15

Приветствую вас, уважаемый читатель, в новом видеоуроке программирования на PHP средствами фреймворка Kohana 3.1.

Тема 15-го PHP-видеоурока:

  • Как убрать из модели текст, отправляемый на эл. почту при регистрации пользователя. В предыдущем видеоуроке мы жестко прописали текст, отправляемый пользователю на e-mail, в модели Register. В принципе ничего страшного, но это повлияло на гибкость нашего решения. Такую модель нельзя будет применить в другом проекте без копания в PHP-коде. Kohana позволяет вынести текст сообщения из модели в отдельный файл. Этим мы и займемся в данном видеоуроке по PHP.

Почему нужно убрать текст сообщения, отправляемого на эл. почту, из модели регистрации: в файле, описывающем модель, должен присутствовать только программный PHP-код, отвечающий за функционирование методов, присущих данной модели. В модели не должно быть сущностей, отвечающих за внешний вид, отображаемый пользователю, иначе теряется гибкость.

Однажды написав логику модели, программист не должен ломать голову над ее функционированием и лезть в файл описания каждый раз, когда ему потребуется изменить тот или иной параметр внешнего вида.

Решение возникшей проблемы схоже с решением, примененным в 10-м видеоуроке по PHP.

Так, разрабатывая модели регистрации в 10-м видеоуроке по PHP, в случае успешного выполнения регистрирующего метода, в контроллере создавалось поле массива под названием regok с пустым значением. В свою очередь, файл, отвечающий за отображение (regview), проверял существование переменной regok и, в случае ее присутствия, выводилось сообщения об успешной регистрации, написанное в файле вида regview. Это один из способов генерации сообщений для пользователя сайта.

Другой способ — хранение сообщения в папке message.

В Kohana существует определенный метод, имеющий все то же название message, позволяющий заменить кодовое слово в модели на соответствующую запись файла из папки message.

Рассмотрим второй способ на примере сообщения о восстановлении пароля, код для отправки которого мы написали в предыдущем видеоуроке.

Модель register, метод hochuNoviyParol.

Отправляя e-mail, содержащий ссылку для восстановления пароля, мы жестко (или даже жестоко) прописали тему сообщения в модели $subject = 'Восстановление пароля'.

Более правильным будет следующий подход:

$subject = Kohana::message('reg', 'subject');

Используется метод класса message, параметрами которого является:

  • reg — имя PHP файла, расположенного в папке www\application\messages (reg.php).
  • subject — название поля массива, объявляемого в файле reg.php, содержимым которого является текст темы сообщения.

Внутренности файла reg.php выглядят следующим образом:

<?php defined('SYSPATH') or die('No direct script access.');

return array(
    'subject' => 'Восстановление пароля',
);

Теперь в переменную $subject будет подставлено содержимое, объявленное в файле reg.php.

Третий способ — подключение файла отображения.

Часто в текст вывода необходимо включить содержимое тех или иных переменных. Для такого случая я предлагаю воспользоваться передачей в переменную файла отображения из папки www\application\views.

Например, все в том же методе hochuNoviyParol, жестко прописывалось содержимое переменной $message.

$message = "Перейдите по ссылке <a href='http://kohana1/auth/checkcode/$genpass'>http://kohana1/auth/checkcode/$genpass</a>";

Кроме текста в переменную $message передавалось значение переменной $genpass.

Правильным будет передать в переменную $message содержимое, формируемое методом factory.

В массив $data передаем содержимое переменной $genpass:

$data = array ('genpass' => $genpass);

И формируем переменную $message на основе файла внешнего вида www\application\views\email\emailviews.php

$message = View::factory('email/emailviews', $data);

Файл emailviews.php содержит следующий PHP-код:

Перейдите по ссылке <a href='http://kohana1/auth/checkcode/<?=$genpass?>'>http://kohana1/auth/checkcode/<?=$genpass?></a>

В результате, тело сообщения для отправки по эл. почте будет сформировано на основе содержимого файла emailviews.php.

Видеоурок PHP:

Скачать видеоурок (19.3 МБ, *.wmv).

У видеоурока есть спонсор (как им стать):

Хочу порекомендовать вам, уважаемый читатель, интересный блог, посвященный веб-строительству. Ответ на вопрос как создать свой сайт вы запросто найдете на данном ресурсе.

<<Предыдущая публикация курса    Следующая публикация курса>>

С уважением, Андрей Морковин.