如何使用 Yii 条件验证器在客户端工作?

How to use YiiConditionalValidator to work on client side?

我正在使用 Yii 1.1.20 的 YiiConditionalValidator.php 扩展。 当我将按钮 (is_master) 从 1 切换到 0 时,我想要必填字段 (master_id) ...

is_master - 1 或 0 master_id - 如果 "is_master" = 0 使“master_id 需要...

所以...我的模型规则如下所示:

public function rules()
{
    return [
        ['is_master', 'required'],
        ['is_master', 'validators.YiiConditionalValidator',
            'if' => [
                ['is_master', 'compare', 'compareValue'=> "0"],
            ],
            'then' => [
                ['master_id', 'required'],
            ],
        ],
        ['is_master, master_id', 'safe', 'on' => 'search'],
    ];
}

在我的表单中,我设置了以下选项:

'enableAjaxValidation' => false,
'enableClientValidation' => true,
'clientOptions' => array(
    'validateOnChange' => true,
    'validateOnSubmit' => true,
),

我的$form好像看不到这个条件规则...

感谢您的帮助!

虽然没有人知道 ^____^ ...我几乎没有研究,答案是 YiiConditionalValidator.php 中缺少一个功能...

当你看 yii 1.1.x framework/validators 其中大部分有 2 个功能:

  1. 受保护的函数 validateAttribute($object,$attribute) 和
  2. public 函数 clientValidateAttribute($object,$attribute)

这就是为什么 YiiConditionalValidator.php 不能在客户端工作,因为它缺少 public 函数 clientValidateAttribute($object,$attribute) which "Returns the JavaScript needed for performing client-side validation"...

如果您想知道它看起来如何,请检查您的项目文件夹/framework/validators

此致! 汤姆