我想通过 jQuery 更改 View 页面中的场景。 我的表单中有一个复选框,我希望选中的复选框中需要输入框。
我的规则:
public function rules() {
return [
.
.
.
['pass' , 'required', 'on'=> 'checked']
]
}
我的查看页面:
<?=$form->field($model, 'check')->checkbox()?>
<?=$form->field($model, 'Pass')->textInput(['maxlength' => 20])?>
最佳答案
尝试像这样设置规则:
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'
],
];
}
了解conditional validation和 whenClient validator property 。还可以考虑为您的场景命名更多信息,例如按其用途,例如 'on' => 'sign-up'
或 'on' => 'login'
。当您需要在特定情况下应用某些规则时,场景非常有用,但您需要明确指定此场景。当您实例化模型时
$model = new MyModel();
$model->scenario = 'sign-up';
并将其传递到 View 中,或者在 $model->load($data)
关于php - 以 Yii2 形式更改场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36301925/