如何使用YiiConditionalValidator在客户端工作?

时间:2018-11-19 10:36:59

标签: php yii yii1.x

我正在使用Yii1.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无法看到此条件规则...

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

虽然没人知道^ ____ ^ ...我很少进行研究,但答案是在YiiConditionalValidator.php中缺少一个函数...

当您查看yii 1.1.x框架/验证器时,它们大多数具有2个功能:

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

这就是为什么YiiConditionalValidator.php无法在客户端运行的原因,因为它缺少公共功能clientValidateAttribute($ object,$ attribute),该函数“返回执行客户端验证所需的JavaScript” ...

如果您想知道它的外观,请检查项目文件夹/框架/验证器

最好的问候! 汤姆