Zend_Validate_GreaterThan忽略相等的值

时间:2011-08-08 08:55:23

标签: php zend-framework zend-form zend-validate

我有下一个验证:

$gvGreaterThanPvValidate = new Zend_Validate_GreaterThan(array('min' => 100));
$gvGreaterThanPvValidate->setMessage('GV should be greater than PV or equal');
$gv->addValidator($gvGreaterThanPvValidate);

根据Zend文档,它应该为值= 100返回TRUE。但是对于相等的值,此验证器返回FALSE。你能帮助我吗?抱歉我的英文。

3 个答案:

答案 0 :(得分:2)

这是GreaterThan验证器的代码。因此,如果数字等于,则返回false。

    if ($this->_min >= $value) {
        $this->_error(self::NOT_GREATER);
        return false;
    }
    return true;

文档说:Returns true if and only if $value is greater than min option因此,如果值等于,则返回false

答案 1 :(得分:2)

您可以使用具有“包含”开关的Between验证器。只需将max设置为somethng就像PHP_INT_MAX一样大。这是一个黑客,但它的工作原理

答案 2 :(得分:0)

以为我会回答这个问题,因为我正在寻找相同的东西,在阅读了实际代码后,我注意到有一个"包含"选项,将其设置为true,并且您拥有GreaterThanOrEqualTo验证器:

这是针对ZF2:

        $this->add([
            'name' => 'bill_total',
            'required' => true,
            'filters'    => [
                ['name' => 'StringTrim']
            ],
            'validators' => [
                [
                    'name'    => 'greaterThan',
                    'options' => [
                        'min' => 5,
                        'inclusive' => true
                    ]
                ]
            ]
        ]
    );