Yii2中的条件验证

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)

vis*_*huB 6

在规则中

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)