Разработка сайта на Yii с нуля. Урок 6. Автоматич. отправка оповещений об одобренных комментариях на email автора комментария
Видео:
1. Выведем в форму редактирования комментария поле Статус, чтобы получить возможность вручную устанавливать его значение в "Ожидает модерации". Это очень понадобится при тестировании отправки оповещений на email (чтобы не пложить уйму комментов новых, мы будем обходиться одним).
2. В модели Comment при одобрении модератором комментария (нажатие на ссылку approve) сработает действие approve(). Сюда и добавим событие для оповещения. Создадим экземпляр класса потомка CEvent - а именно, класс события ApproveCommentEvent
/** * Approves a comment. */ public function approve() { $this->status=Comment::STATUS_APPROVED; $this->update(array('status')); //создаём экземпляр потомка CEvent $event = new ApproveCommentEvent($this); $event->comment = $this; // вызываем событие $this->onApproveComment($event); }
Ниже здесь же в модели создаём функцию onApproveComment, чтобы дальше мы смогли писать onApproveComment вместо raiseEvent.
// описываем событие onApproveComment public function onApproveComment($event) { // Событие реально то пробуждается здесь, так как непосредственно вызывать событие принято в его описании. Так мы можем использовать метод onNewComment вместо raiseEvent $this->raiseEvent('onApproveComment', $event); }
3. Описываем класс-оповещатель Notifier в protected/components и класс ApproveCommentEvent
<?php
// Класс-оповещатель, рассылает почту при различных событиях
class Notifier {
function comment($event){
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
$headers .= "From: Yiico <".Yii::app()->params['adminEmail'].">\r\nReply-To: ".Yii::app()->params['adminEmail'];
$text = "Ваш комментарий на Yiico одобрен модератором.<br />
<blockquote>
Комментарий: <b>{$event->comment->content}</b><br />
Автор: <b>{$event->comment->author}</b><br />
Email: <b>{$event->comment->email}</b><br />
Url: <b>{$event->comment->url}</b><br />
Вы можете комментарий <a href=\"".Yii::app()->request->getBaseUrl(true)."{$event->comment->url}\">{$event->comment->url}</a><br /><br />
Best Regards, Yiico<br />
";
mail($event->comment->email,'Ваш комментарий на Yiico',$text,$headers);
//$material = $event->sender;
//foreach($material->comments as $comment){
// if($comment->notify === "1") mail($comment->email, 'Новый комментарий на сайте yiico', $text,$headers);
//}
}
}
4. В контроллере CommentController назначаем оповещателя обработчиком в действие actionApprove()
$notifier = new Notifier(); // добавляем обработчик события $comment->onApproveComment = array($notifier, 'comment'); // ф-ция comment из компонента Notifier $comment->approve();
Теперь при вызове $comment->approve() выполняется и метод $notifier->comment.
almix
Разработчик Loco, автор статей по веб-разработке на Yii, CodeIgniter, MODx и прочих инструментах. Создатель Team Sense.
Вы можете почитать все статьи от almix'а.
- 14 Разработка приложения на Yii. Урок 14: Выводим список категорий как новый виджет на сайте (29.04.2015) free
- 13 Разработка приложения на Yii. Урок 13: Внедряем категории для статей. (29.04.2015) free
- 12 Разработка приложения на Yii. Урок 12: Профилирование приложения, включаем кеширование. (20.01.2015)
- 11 Yiico. Видеокурс по разработке сайта на Yii. Урок 11: Отладка приложения, включаем журналирование. (20.01.2015)
- 10 Yiico. Видеокурс по разработке сайта на Yii. Урок 10: Если ваше приложение находится не в корневой папке, а во вложенной. (19.10.2014) free
- 9 Разработка сайта на Yii с нуля. Урок 9. Выборка статей определённого автора. (13.08.2014) free
- 8 Разработка сайта на Yii с нуля. Урок 8. Вызов в моделях функции, общей для них. Как избегать дублирования кода? (25.07.2014) free
- 7 Разработка сайта на Yii с нуля. Урок 7. Изменение количества выводимых записей на странице в CGridView. Включаем сессии Yii. (04.09.2013) free
- 6 Разработка сайта на Yii с нуля. Урок 6. Автоматич. отправка оповещений об одобренных комментариях на email автора комментария (11.08.2013) ← вы тут free
- 5 Разработка сайта на Yii с нуля. Урок 5. Переименовываем blog в yiico. Изменяем "Home" в breadcrumbs. Включаем Gzip-сжатие. (09.08.2013) free
- 4 Курс по Yii с нуля. Урок 4. Дорабатываем простую работу с пользователями: хранение пароля при редактировании пользователя. (13.04.2013) free
- 3 Курс по Yii с нуля. Урок 3. Создаём новых пользователей. Организуем простую систему авторизации. Аутентификация, пароли, соли. (20.07.2014) free
- 2 Курс по Yii с нуля. Урок 2. Переносим и настраиваем Yii и проект нашего сайта на рабочем сервере. Избавляемся от index.php в url (09.07.2014) free
- 1 Курс по Yii с нуля. Урок 1. Устанавливаем Yii на локальном компьютере. Заводим проект будущего сайта. (10.03.2013) free