Blo*_*und 0 validation yii2 yii2-advanced-app
我有一个带有两个值(必填字段)的单选按钮,基于该值显示一个字段(有两个字段是隐式的,它是根据单选按钮的值显示的)应该是必需的.所以我对最初隐藏的字段使用了条件验证.
这是我的型号代码:
public function rules()
{
return [
[['receipt_no', 'date_of_payment', 'payment_method_id',
'total_amount'], 'required'],
['nonmember_name', 'required', 'whenClient' => function($model)
{
return $model->is_member == 2;
}, 'enableClientValidation' => false],
['member_id', 'required', 'whenClient' => function($model)
{
return $model->is_member == 1;
}, 'enableClientValidation' => false],
[['receipt_no', 'date_of_payment', 'payment_method_id',
'total_amount','is_member'], 'required','on' => 'receipt'],
];
}
Run Code Online (Sandbox Code Playgroud)
我用的是一个场景receipt,is_member就是单选按钮字段.如果我选择值1,is_member那么字段member_id是可见的,它应该是必需的.如果is_member值为2则nonmember_name显示,它应该成为必填字段.凭借我在模型中的代码,我设法实现了它.但现在使用此模型的其他操作(将新数据行保存到模型中)存在错误
数组([nonmember_name] =>数组([0] =>名称不能为空.))
所以我的问题是我如何才能对场景进行特定的条件验证(我认为我的错误是由条件验证中定义的必需规则引起的)
编辑:
这是我的单选按钮
<?= $form->field($model, 'is_member')->radioList(array('1'=>'Member',2=>'Non Member'))->label('Member or Not'); ?>
Run Code Online (Sandbox Code Playgroud)
在规则中
public function rules()
{
return [
[
'nonmember_name',
'required',
'when' => function ($model) {
return $model->is_member == 2;
},
'whenClient' => "function (attribute, value) {
return $('#id').val() == '2';
}"
]
];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5312 次 |
| 最近记录: |