Подскажите, пожалуйста, как создать behavior для моделей?
Есть две модели:
User и
Staff (Active Record сущности), у них есть общие действия при
afterSave($insert, $changedAttributes).
Хочу вынести это в behavior.
Создал класс myBehavior extends AttributeBehavior
в events подписался на event after insert
Перенес сюда
public function afterSave($insert, $changedAttributes), а в моделях в behavior просто подключил
myBehavior::className()
Когда сохраняю пользователя, срабатывает afterSave, но
insert и
changeAttributes не передались. Почему так и как сделать правильно?
<?php
namespace frontend\components;
use common\models\Log;
use yii\behaviors\AttributeBehavior;
use yii\db\ActiveRecord;
class EntityLogBehavior extends AttributeBehavior
{
public function events()
{
return [
ActiveRecord::EVENT_AFTER_INSERT => 'afterSave',
];
}
/**
* @param bool $insert
* @param array $changedAttributes
*/
public function afterSave($insert, $changedAttributes)
{
parent::afterSave($insert, $changedAttributes);
// some logic
Log::add(Yii::$app->user->identity->id, $this::className(), $this->id, $action);
}
}
// А это в модели User
/**
* @inheritdoc
*/
public function behaviors()
{
return [
EntityLogBehavior::className()
];
}