Какие есть варианты запретить изменение атрибута основываясь на роли пользователя?
Нужно разрешить массовое присвоение этого атрибута при создании - для админа и девелопера, а при редактировании - только для девелопера. Мой вариант сейчас:
Модель:public function rules(){
return [
['id', 'required'],
['id', 'string'],
['id', 'unique'],
];
}
public function scenarios(){
return [
MODEL::SCENARIO_DEFAULT => ['id', 'title'],
MODEL::SCENARIO_UPDATE => ['title'],
];
}
Контроллер:public function actionUpdate($id){
$model = $this->findModel($id);
if (Yii::$app->user->identity->role < User::ROLE_DEVELOPER){
$model->scenario = $model::SCENARIO_UPDATE;
}
// ...
}
Не хочется использовать этот вариант, т.к. данный контроллер наследуется от "базового ManagerController", в котором не нужен такой функционал. Да и переписывать метод в этом контроллере не хочется.
Думаю можно навесить такую проверку в beforeValidate в модели. Но возможно есть что-то более лаконичное? Может в rules как-то это прикрутить?