Изменение статуса в модели и отправка емейла

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
NeverDie
Сообщения: 69
Зарегистрирован: 2012.05.13, 04:05
Откуда: Минск
Контактная информация:

Изменение статуса в модели и отправка емейла

Сообщение NeverDie » 2019.05.20, 22:51

Здравствуйте!
Подскажите как лучше сделать. Есть модель. В одном из полей будут меняться статусы, начиная с 1 до 5.

Код: Выделить всё

class MyModel {
	const STATUS = [1,2,3,4,5];
}

$model = new MyModel;
$model->status = 1;
$model->save();
Изменяться статусы могут из разных мест приложения. В разных экшенах.
Но после каждого изменения нужно отправлять емейл.
Подойдут ли для этого events или есть другой, более хороший способ? В одном из сообщений на форуме samdark Александр Макаров говорил, что по возможности их лучше не использовать, я с тех пор стараюсь их обходить.

Аватара пользователя
leonenco
Сообщения: 128
Зарегистрирован: 2017.01.30, 22:42

Re: Изменение статуса в модели и отправка емейла

Сообщение leonenco » 2019.05.21, 03:52

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

Код: Выделить всё

class MyModel {
	const STATUS_ADMIN = 1;
}
$model = new MyModel;
$model->status = $model::STATUS_ADMIN;
$model->save();
а во вторых отвечая на ваш вопрос, можно было бы использовать behaviors. Если не изменяет память их можно подвешивать и в моделе.

https://www.yiiframework.com/doc/guide/ ... -behaviors

Аватара пользователя
Йож
Сообщения: 572
Зарегистрирован: 2015.08.26, 03:05

Re: Изменение статуса в модели и отправка емейла

Сообщение Йож » 2019.05.21, 20:31

NeverDie, делайте команду ChangeModelStatusCommand.

https://github.com/trntv/yii2-command-bus

И запускайте из любого места, хоть из консольных экшенов.
Там же в команде добавляйте отправку емейла, да и вообще что угодно.

Ответить