Yii2 методы beforeSave и afterSave

В заметке рассмотрены очень важные, на мой взгляд, функции: 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 является массив старых значений атрибутов, которые были изменены.