для отправки рассылок создал отдельный компонент mailers. отправляю письма так: Yii::$app->mailers->sendMultiple($messages). Мне надо, чтоб при отправке каждого из них выполнялась моя функция, записывающая данные об отправке этого письма в базу. У меня есть экшен в контроллере, в котором я запускаю отправку писем:
public function actionRun(){
$messages = ....
Yii::$app->mailers->sendMultiple($messages)
}
Как в данном случае вызвать метод myMetodReadToBd() после отправки каждого отдельного письма, чтоб сделать описанное выше исключительно при работе через компонент mailers?
Как использовать событие ( человеческим языком ) ?
Re: Как использовать событие ( человеческим языком ) ?
Отнаследовать свой mailer от класса Component и в нём триггерить событие:
Код: Выделить всё
class Mailer extends Component
{
const MESSAGE_SENT = 'emailSent';
public function send($message) {
...
$this->trigger(self::MESSAGE_SENT, new MessageEvent(['message' => $message]));
}
}