У меня есть следующая проблема. Я написал (на основе учебника) проверку формы. Текстовые поля работают отлично, но целочисленное поле ведет себя нечетно.
Это мой валидатор:
$inputFilter->add($factory->createInput(array( 'name' => 'zip', 'required' => false, 'filters' => array( array('name' => 'Int'), ), )));
Он находится внутри моего Entity.php, как и другие фильтры. Странно то, что этот не принимает даже строку, но игнорирует required
когда я устанавливаю ее в true
. Я попытался заменить Int
Digits
которые затем заставляют форму принимать required
но все равно принимают строки.
Есть идеи? Благодаря!
Попробуйте использовать параметр « Между валидатором»:
$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()
целое число, поэтому, когда вы выполняете $form->getData()
поле с фильтром Int
будет иметь только целочисленные значения и 0, если оно пустое.
array( 'name' => 'not_empty', ), array( 'name' => 'Digits', ), array( 'name' => 'Between', 'options' => array( 'min' => 0, 'max' => 1, ), ),