Zend Framework 2 - Проверка целочисленной формы


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

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

        $inputFilter->add($factory->createInput(array(
            'name'     => 'zip',
            'required' => false,
            'filters'  => array(
                array('name' => 'Int'),
            ),
        )));

Это лежит в моей Entity.php как и другие фильтры. Странно то, что этот не принимает даже строку, но игнорирует required, когда я устанавливаю его в true. Я попытался заменить Int на Digits, что затем заставляет форму принимать required, но все равно принимает строки.

Есть идеи? Спасибо!

Author: Ron, 2012-12-18

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,
                  ),
              ),
            ),
        )));
 10
Author: Reshil, 2014-11-19 15:55:14

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

НапримерInt фильтр удалит любое нецелое число из входных данных, поэтому при выполнении $form->getData() поле с фильтром Int будет иметь только целочисленные значения и 0, если оно пустое.

 3
Author: Exlord, 2014-08-25 06:19:50
 array(
                        'name' => 'not_empty',
                    ),
                    array(
                        'name' => 'Digits',
                    ), array(
                        'name' => 'Between',
                        'options' => array(
                            'min' => 0,
                            'max' => 1,
                        ),
                    ),
 1
Author: Jestin Skaria, 2016-11-28 07:46:54