Ситуация, когда надо приписать в моделе значение по умолчанию очень часта, как это можно реализовать в Yii2 есть мнжество способов, но как будет правильне?? Yii2 не так давно изучаю, от сюда и возник такой вопрос. Итак, что ужалось найти, на примере user_id из текущей сессии:
1) Прописать в метод beforeValidation
public function beforeValidation(){
if($this->isNewRecord()){
$this->user_id = Yii::$app->user->identity->id
}
}
1.5) или beforeSave
public function beforeSave($insert){
if($insert){
$this->user_id = Yii::$app->user->identity->id
}
}
2) В моделе в rules прописываем:
public function rules()
{
return [
['user_id', 'integer'],
['user_id', 'default', 'value' => Yii::$app->user->identity->id ],
];
}
3) С помощью behaviors:
public function behaviors()
{
return [
'blame' => [
'class' => BlameableBehavior::className(),
'attributes' => [
BaseActiveRecord::EVENT_BEFORE_INSERT => 'user_id'
],
]
];
}
4) Есть и вариант с передачей в модель при объявлении объекта
$model = new SomeThing(['user_id' => Yii::$app->user->identity->id ]);
Так как же в более правильнее в ситуации указания текущего пользователя по умолчанию?