Zend_Validate_GreaterThan игнорирует одинаковые значения

У меня есть следующая проверка:

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

Согласно документации Zend, он должен возвращать TRUE для значения = 100. Но для равного значения этот валидатор возвращает FALSE. Вы можете помочь мне? Извините за мой английский.


person Alex Pliutau    schedule 08.08.2011    source источник


Ответы (3)


Это код валидатора 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

person yokoloko    schedule 08.08.2011
comment
Да, прости. Знаете ли вы валидатор для равных или больших? - person Alex Pliutau; 08.08.2011

Вы можете использовать валидатор Between, у которого есть переключатель «включительно». Просто установите для max что-то действительно большое, например PHP_INT_MAX. Это хак, но он работает

person Tomáš Fejfar    schedule 08.08.2011

Думал, что отвечу на это, так как искал то же самое, и после прочтения фактического кода я заметил, что есть опция «включающая», установите для нее значение true, и у вас есть валидатор GreaterThanOrEqualTo:

Это для ZF2:

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