Нужно сделать так, чтобы при получении данных из формы мы писали в базу все полученные данные, кроме одного.
Например, у нас есть в форме 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)){
...
}
...
}
Ну и еще разные пути)
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
при вводе числа AA в 16и ричнной системе выдаёт не 170 а 160
Объясните, пожалуйста, как настроить среду запуска и отладки драйвера на Windows чтобы target машина была виртуальная, а написание происходило...
Как переменную int положить в массив char в С++