Замечательные методы beforeSave() и afterSave() в Yii2 помогают нам решать различные задачи, к примеру вы хотите перед сохранением в базу поменять формат даты, или сохранить лог действия. Но не все знают как правильно их наследовать.
Начнем с простого afterSave():
|
public function afterSave($insert, $changedAttributes){ parent::afterSave($insert, $changedAttributes); //... тут ваш код } |
Тут ничего сложного, мы просто передаем в родительский метод все те же параметры и запускаем его, а потом делаем все нам необходимое.
Теперь beforeSave():
|
public function beforeSave($insert) { if (parent::beforeSave($insert)) { //... тут ваш код return true; } return false; } |
Все практические так же как и с методом afterSave() за исключением того что нам нужно вернуть результат работы родительского метода, иначе мы при вызове метода $model->save() будем получать false, и наша модель не будет сохраняться, при этом мы не будем получать никаких ошибок. Учтите этот момент.
В Yii1 принцип такой же, только там не передаются параметры.