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

yvfmudvl  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(108)

我正在使用YiiConditionalValidator.php扩展到Yii 1.1.20.我想有必填字段(master_id),当我切换按钮(is_master)从1到0...
is_master - 1或0主标识-如果“is_master”= 0,则需要“主标识...
所以......我的模型规则看起来像这样:

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无法看到此条件规则...
感谢您的帮助!

jgwigjjp

jgwigjjp1#

虽然没有人知道^_____^...我做了一些研究,答案是在YiiConditionalValidator.php中缺少了一个函数...
当你看yii 1.1.x框架/验证器时,它们大多数都有2个功能:
1.受保护的函数validateAttribute($object,$attribute)和
1.公共函数客户端验证属性($object,$attribute)
这就是为什么YiiConditionalValidator.php不能在客户端工作的原因,因为它缺少公共函数clientValidateAttribute($object,$attribute),该函数“返回执行客户端验证所需的JavaScript”...
如果您想知道它看起来如何,请检查您的项目文件夹/framework/validators
顺祝商祺!Tom

相关问题