Нужно сделать так, чтобы при получении данных из формы мы писали в базу все полученные данные, кроме одного.
Например, у нас есть в форме 3 поля: f1, f2, f3.
Мы в модели можем написать так:
public function scenarios()
{
return [
'my' => ['f1', 'f2'],
];
}
Все отлично, но если у нас полей не 3, а 30, то переписывать все доступные поля не хочется.
Есть ли способ через сценарии написать, чтобы доступными были все, кроме одного, ну, или кроме нескольких?
Если необходимо именно через сценарии, то можно вспомнить что это обычная функция, вы в ней можете получить все поля модели, удалить то поле которое не нужно и передать в сценарий
public function scenarios()
{
$fields = $this->attributes();
unset($fields['somefield']);
return [
'my' => $fields,
];
}
Можно другим путем пойти, очистить поле перед валидацией:
public function beforeValidate(){
$this->somefield = null;
return parent::beforeValidate();
}
А можно и просто в контроллере не передавать модели то поле которое не надо:
public function actionSomeAction(){
$post = Yii::$app->request->post();
$post['somefield'] = null;
$model = new Model();
if($model->load($post)){
...
}
...
}
Ну и еще разные пути)
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости