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