@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 и гарантирует, что все обработчики этого события будут выполнены.