Zend Framework 2 - Проверка целочисленной формы
У меня следующая проблема. Я написал (на основе учебника) проверку формы. Текстовые поля работают просто отлично, но целочисленное поле ведет себя странно.
Это мой валидатор:
$inputFilter->add($factory->createInput(array(
'name' => 'zip',
'required' => false,
'filters' => array(
array('name' => 'Int'),
),
)));
Это лежит в моей Entity.php как и другие фильтры. Странно то, что этот не принимает даже строку, но игнорирует required
, когда я устанавливаю его в true
. Я попытался заменить Int
на Digits
, что затем заставляет форму принимать required
, но все равно принимает строки.
Есть идеи? Спасибо!
3 answers
Попробуйте использовать Между валидатором:
$inputFilter->add($factory->createInput(array(
'name' => 'zip',
'required' => true,
'filters' => array(
array('name' => 'Int'),
),
'validators' => array(
array(
'name' => 'Between',
'options' => array(
'min' => 1,
'max' => 1000,
),
),
),
)));
Это старая тема, но я должен упомянуть, что Filters
не вызывают ошибок проверки, они работают в фоновом режиме и выполняют свою работу молча.
НапримерInt
фильтр удалит любое нецелое число из входных данных, поэтому при выполнении $form->getData()
поле с фильтром Int
будет иметь только целочисленные значения и 0, если оно пустое.
array(
'name' => 'not_empty',
),
array(
'name' => 'Digits',
), array(
'name' => 'Between',
'options' => array(
'min' => 0,
'max' => 1,
),
),