我有一个自定义验证规则,以确保在字段中设置非零价格。我在该字段中有一个占位符(0.00),以防止用户输入美元符号等内容。但是,当我去验证非零条目时,$this->data[$this->alias]['price']
在我的测试中是'0.00',但验证工作正常 - 它无效。但是当我输入1000.00时,它也会失效。
我找不到的一件事是,如何从自定义验证字段返回以使字段无效。目前,代码是:
public function notZeroPrice($check){
if ($check == '0.00')
return true;
return false;
}
文档对$check
的结构也不清楚。
答案 0 :(得分:3)
如果验证,则返回true。如果没有,则返回false。
但是,您的验证方法一开始就存在缺陷。如果你调试它,$check
是一个数组,所以你的方法总是返回false。其次,你想测试它的> 0,不仅仅等于'0.00'。你将比较2个字符串,这样也无法正常工作。
相反,如果值大于0(int),则返回true。您可以使用array_shift($check)
;
return array_shift($check) > 0; // or something similar.
您甚至可以通过'rule' => array('comparison', '>', 0),
核心验证。
(我假设价格不为零也意味着不是负价)