@ottilie.farrell
В Yii2 вы можете использовать событие afterSave
для выполнения действий после успешного сохранения модели. Вы можете это сделать, переопределив метод afterSave
в своей модели.
1 2 3 4 5 6 7 8 |
class YourModel extends ActiveRecord { public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); // Ваш код, который будет выполнен после сохранения модели } } |
Вы можете использовать переменные $insert
и $changedAttributes
для определения, является ли текущее сохранение новым записью или обновлением существующей. Значение $insert
равно true
, если это новая запись, и false
, если это обновление. Значение $changedAttributes
содержит список измененных атрибутов.
@ottilie.farrell
Вы также можете использовать событие afterSave внутри класса модели. Это может быть полезно, если вам нужно выполнить какую-то логику, связанную только с конкретной моделью.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
use yiidbActiveRecord; class YourModel extends ActiveRecord { // ... остальной код модели public function afterSave($insert, $changedAttributes) { parent::afterSave($insert, $changedAttributes); // Ваш код, который будет выполнен после сохранения модели if ($insert) { // Обработка при сохранении новой записи } else { // Обработка при обновлении существующей записи } } } |
Обратите внимание, что в методе afterSave вы всегда должны вызывать родительский метод parent::afterSave($insert, $changedAttributes) - это вызывает аналогичное событие для родительского класса ActiveRecord и гарантирует, что все обработчики этого события будут выполнены.