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. Вы можете мне помочь? Извините за мой английский.

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

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

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

Это для ZF2:

        $this->add([
            'name' => 'bill_total',
            'required' => true,
            'filters'    => [
                ['name' => 'StringTrim']
            ],
            'validators' => [
                [
                    'name'    => 'greaterThan',
                    'options' => [
                        'min' => 5,
                        'inclusive' => true
                    ]
                ]
            ]
        ]
    );
Другие вопросы по тегам