У меня есть форма Yii2, содержащая поля формы в зависимости от действия страницы. Ex. При create
действия появляется несколько полей, и при update
действия появляется мало. Я хочу добавить требуемую проверку на основе этого сценария.
Ex.
<?= $form->field($model, 'unique_identifier')->textInput(['maxlength' => 45]) ?>
Я показываю это поле только тогда, когда action => 'update'
.
Теперь я хочу добавить требуемую проверку для этого, и я попробовал это:
[['unique_identifier'], 'required', 'on' => 'update'],
Но над валидацией не работает. Если я удалю on=>update
то его проверку на сценарии создания и обновления.
Любая помощь будет оценена по достоинству.
ActiveRecord автоматически не устанавливает сценарий при обновлении или создании элементов. Вы должны переопределить метод update()
в своей модели и установить сценарий, который вам нужен. Например, в вашем случае
public function update($runValidation = true, $attributeNames = null) { $this->scenario = 'update'; return parent::update($runValidation, $attributeNames); }
Также вы можете установить сценарий в своем actionUpdate
public function actionUpdate($id) { $model = $this->findModel($id); $model->scenario = 'update'; //load data from request, save model etc. }