CakePHP ::自定义验证方法返回什么?

时间:2012-08-20 01:10:35

标签: validation cakephp cakephp-2.0

我有一个自定义验证规则,以确保在字段中设置非零价格。我在该字段中有一个占位符(0.00),以防止用户输入美元符号等内容。但是,当我去验证非零条目时,$this->data[$this->alias]['price']在我的测试中是'0.00',但验证工作正常 - 它无效。但是当我输入1000.00时,它也会失效。

我找不到的一件事是,如何从自定义验证字段返回以使字段无效。目前,代码是:

public function notZeroPrice($check){
    if ($check == '0.00')
        return true;

    return false;
}

文档对$check的结构也不清楚。

1 个答案:

答案 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),核心验证。

(我假设价格不为零也意味着不是负价)