$inputFilter->add($factory->createInput(
array(
'name' => 'phone',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
'validators' => array(
array(
'name' => 'Between',
'options' => array(
'min' => 10,
'max' => 11,
),
),
),
)
));
Это показывает:
Входное значение не находится между 6 и 10 включительно.
Каждый раз он показывает одно и то же сообщение во всех случаях, даже в пустом
Вы хотите использовать ZF2 StringLength
валидатор вместо:
$inputFilter->add($factory->createInput(
array(
'name' => 'phone',
'required' => true,
'filters' => array(
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'min' => 10,
'max' => 11,
),
),
),
)
));
Как вы видите, я бы предложил обрабатывать номер телефона как строку в таком случае.
Когда вы проверяете целое число, опцияween — это значение int, которое вы там вводите. Не длина этого.
В этом случае :
55501015 не между 6 и 10 включительно.
7 есть.
Ваш валидатор Между выглядит примерно так:
public function isValid($value)
{
$this->setValue($value);
if ($this->getInclusive()) {
if ($this->getMin() > $value || $value > $this->getMax()) {
$this->error(self::NOT_BETWEEN);
return false;
}
} else {
if ($this->getMin() >= $value || $value >= $this->getMax()) {
$this->error(self::NOT_BETWEEN_STRICT);
return false;
}
}
return true;
}
Это не проверка длины, а значение.
Плюс, если оно пустое, значение вашего int явно не между 6 или 10, так что это не проблема для меня, если вы хотите показать, что значение не может быть пустым, вы используете другой валидатор в validatorChain.
Вы должны поместить это как строку, и контроль может быть через специальный валидатор с регулярным выражением для этой строки, как показано ниже:
$inputFilter->add($factory->createInput(
array(
'name' => 'phone',
'required' => true,
'filters' => array(
array('name' => 'StripTags'), // don't forget this one
array('name' => 'StringTrim'),
),
'validators' => array(
array(
'name' => 'StringLength',
'options' => array(
'min' => 10,
'max' => 11,
),
),
),
)
));