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

4

1 回答 1

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

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

于 2012-08-20T02:39:11.393 回答