[英]compare validation rule fails in yii2
I am using yii2, I have three fields num1,num2,num3.我正在使用 yii2,我有三个字段 num1、num2、num3。 I want to add validation, num2 input should be greater than num1 input, so I am using compare rule.我想添加验证,num2 输入应该大于 num1 输入,所以我使用比较规则。 Here is the code这是代码
return [
[['num1', 'num2', 'num3'], 'required'],
[['num1', 'num2', 'num3'], 'integer', 'min' => self::MIN_SIZE, 'max' => self::MAX_SIZE],
['num2', 'compare', 'compareAttribute' => 'num1', 'operator' => '>'],
];
}
Issue: It works if I add 8,9,10 in the inputs but fails If I add 8,10,11 in the inputs.问题:如果我在输入中添加 8、9、10,它会工作,但如果我在输入中添加 8、10、11,它就会失败。 I have tried adding input type as number.我尝试将输入类型添加为数字。
The operands are compared as strings by default in yii\validators\CompareValidator
.在yii\validators\CompareValidator
中默认将操作数作为字符串进行比较。 That's why '10'
is considered less than '8'
.这就是为什么'10'
被认为小于'8'
原因。
You need to set CompareValidator::$type
property to compare operands as numbers.您需要设置CompareValidator::$type
属性以将操作数作为数字进行比较。
Your rule should look like this:您的规则应如下所示:
[
'num2',
'compare',
'compareAttribute' => 'num1',
'operator' => '>',
'type' => \yii\validators\CompareValidator::TYPE_NUMBER
]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.