Добрый день,
Есть поведение, которое подключаю в модели:
...
public function behaviors()
{
return [
[
'class'=>LogBehavior::classname()
]
];
}
...
public function beforeSave($insert)
{
echo 'Сюда тоже не поапдаю(';
die;
if($insert) {
$this->user_id = Yii::$app->user->id;
}
return parent::beforeSave($insert); // TODO: Change the autogenerated stub
}
LogBehavior:
...
public function attach($owner)
{
parent::attach($owner);
$owner->on(ActiveRecord::EVENT_BEFORE_INSERT,[$this,'onBeforeSave']);
$owner->on(ActiveRecord::EVENT_BEFORE_UPDATE,[$this,'onBeforeSave']);
$owner->on(ActiveRecord::EVENT_AFTER_INSERT,[$this,'onAfterSave']);
$owner->on(ActiveRecord::EVENT_AFTER_UPDATE,[$this,'onAfterSave']);
$owner->on(ActiveRecord::EVENT_AFTER_DELETE,[$this,'onAfterDelete']);
...
}
public function onBeforeSave()
{
echo 'Сюда не попадаю, При сохранении модели эта запись не отображается';
die;
}
...
Только если я явно задаю параметры для модели, тогда попадаю в beforeSave модели:
$model = new Results();
$model->option_id = $this->option_id;
$time = time();
$model->date_create = date('Y-m-d H:i:s',$time);
$model->date_update = date('Y-m-d H:i:s',$time);
$model->date_update_stamp = $time;
$model->date_create_stamp = $time;
$model->author_id = Yii::$app->user->id;
$model->exist = 1;
$model->sort = 1;
if(!$model->save()) {
echo $model->printErrors();
} else {
echo 'ok';
}
die();
Как так? Я же дожен попадать в
beforeSave ( далее в
onBeforeSave) до сохранения модеди перед валидацией.
Поучается, что если я явно не указываю доп. аттрибуты из листинга выше, то
$model->printErrors() ругается на то, что аттрибуты не являются целыми числами. Хотя данные аттрибуты не обязательны к заполнению.
В чем может быть проблема? В
attach?