Изменить сценарий в форме Yii2
Я хочу изменить сценарий на странице просмотра с помощью jQuery. В моей форме есть флажок, я хочу, чтобы в поле флажка было указано поле ввода.
мое правило:
public function rules() {
return [
.
.
.
['pass' , 'required', 'on'=> 'checked']
]
}
моя страница просмотра:
<?=$form->field($model, 'check')->checkbox()?>
<?=$form->field($model, 'Pass')->textInput(['maxlength' => 20])?>
1 ответ
Решение
Попробуйте настроить свое правило так:
public function rules() {
$checkBoxID = Html::getInputId($this, 'check');
return [
/* other rules */
['pass' , 'required',
'when' => function($model) {
return $model->check;
},
'whenClient'=> "function(attribute, value){
return $('#{$checkBoxID}').prop('checked');
}",
'on' => 'checked'
],
];
}
Прочитайте об условной проверке и свойстве validator whenClient. Также подумайте о том, чтобы назвать свой сценарий более информативным, например, по назначению, например 'on' => 'sign-up'
, или же 'on' => 'login'
, Сценарий полезен, когда вам нужны определенные правила для применения в конкретных случаях, но вам нужно явно указать этот сценарий. Либо, когда вы создаете экземпляр модели
$model = new MyModel();
$model->scenario = 'sign-up';
и передать его в представление, или перед выполнением любой проверки после $model->load($data)