Отключить notInArray Validator Zend Framework 2

Есть ли способ отключить notInArray Validator в Zend Framework 2. Вся информация в Интернете показывает, как отключить валидатор notInArray в Zend Framework 1, например, таким образом

Если вы вообще не хотите использовать средство проверки InArray, вы можете отключить это поведение либо путем вызова setRegisterInArrayValidator (false) в элементе, либо путем передачи false в конфигурационный ключ registerInArrayValidator при создании элемента.

Один из сообщений в stackoverflow можно найти здесь

К сожалению, это невозможно в Zend Framework 2. Поэтому, если кто-нибудь имеет подсказку, как это можно отключить.

Ответ 1

Начиная с версии 2.2, Zend Framework предоставляет возможность отключить inArray validator:

$element->setDisableInArrayValidator(false);

или передать опции элементу:

'disable_inarray_validator' => false

Ответ 2

У меня была такая же проблема, и что я сделал, это заполнить элемент перед его проверкой, например:

$clientForm->get('city')->setValueOptions($options);
$clientForm->setData($post);

if ($clientForm->isValid()) {
  //
} else {
  //
}

Это не отключает notInArray valitador, но вы можете обмануть его.

Ответ 3

Я пришел с тем же случаем: в то время как я заполнял элемент html select через ajax после того, как много поисков не нашел способа сделать это, заканчивая созданием моего собственного элемента формы формы, я предоставит вам свои изменения:

    /**
     * Provide default input rules for this element
     *
     * Attaches the captcha as a validator.
     *
     * @return array
     */
    public function getInputSpecification()
    {
        $spec = array(
            'name' => $this->getName(),
            'required' => true,
            //// make sure to delete the validators array in the next line  
            'validators' => array( 
                $this->getValidator()
            )
        );

        return $spec;
    }

Ответ 4

Я нашел это по этой ссылке и подумал, что отправлю его, поскольку нашел это отличным решением.... http://samsonasik.wordpress.com/2012/10/01/zend-framework-2-extending-zendform-to-add-select-multicheckbox-emaildate-textarea-and-radio-element/

Не пытайтесь деактивировать валидатор по умолчанию. переопределяет значения параметров выбора перед setData.

$form->get('state_id')
     ->setOptions(
           array('value_options'=> $Newstatecollection)) ;

Сохраняет беспорядок дезактивации функции, если вам это нужно в другом месте

Ответ 5

Если вам вообще не нужна проверка, добавьте required => false в InputFilter

    $this->add(array(
        'name' => 'your-elements-name',
        'required' => false,
    ));

работал у меня..