В заметке рассмотрены очень важные, на мой взгляд, функции: beforeSave и afterSave, наследуемые от класса BaseActiveRecord, которые можно реализовать в классе модели.
1. beforeSave - метод вызывается перед созданием или редактированием записи:
public function beforeSave($insert)
{
// если $insert== true значит, метод вызвался при создании записи, иначе при обновлении
$saveContinue = parent::beforeSave($insert); // если $saveContinue == false, сохранение будет отменено
if($insert)
{
// здесь, например, можно скорректировать сохраняемые данных
}
return $saveContinue ;
}
Чтобы выполнить сохранение данных, эта функция должна вернуть значение true, если вернуть false - сохранение будет отменено.
2. afterSave - метод вызывается после созданиея или редактирования записи:
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
if($insert)
{
// здесь, например, можно выполнить рассылку писем с новым товаром подписанным пользователям
}
else
{
// а здесь, рассылку об изменении товара
}
}
Вторым параметром метода afterSave является массив старых значений атрибутов, которые были изменены.