Intereting Posts
Как вы создаете строку на PHP с обратной косой чертой? Как анализировать HTML с помощью PHP / ASP.NET? Не удалось получить доступ к моему файлу Google. Файлы с учетной записью службы. Laravel Hash :: check () allways возвращает false python формат datetime с "st", "nd", "rd", "th" (английский порядковый суффикс), как PHP "S" Как вставлять твиттер-твиты .. Как поймать изображения с URL-адресов твитов и отображать фактические изображения? Как использовать Идентификатор страницы в Opencart Не найдено ни одного результата для запроса, хотя ожидалась хотя бы одна строка Что такое символ?? В URL, который используется в php? Лучший способ обрабатывать парсинг / декодирование электронной почты в PHP? Мягкое удаление Каскадирование с помощью Laravel 5.2 выпадающий элемент ind drop при редактировании Изображение кодировки Base64 Преобразование postgresql hstore в php-массив Что означает при чтении из массива PHP?

Zend Framework 2 – Целочисленная проверка формы

У меня есть следующая проблема. Я написал (на основе учебника) проверку формы. Текстовые поля работают отлично, но целочисленное поле ведет себя нечетно.

Это мой валидатор:

$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, ), ),