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
]
]
]
]
);