Как проверить номер мобильного телефона, используя входной фильтр в объекте ZF2

$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 включительно.

Каждый раз он показывает одно и то же сообщение во всех случаях, даже в пустом

0

Решение

Вы хотите использовать 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,
),
),
),
)
));

Как вы видите, я бы предложил обрабатывать номер телефона как строку в таком случае.

1

Другие решения

Когда вы проверяете целое число, опция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,
),
),
),
)
));
0

По вопросам рекламы [email protected]