Disable notInArray Validator Zend Framework 2

2019-04-05 15:25发布

问题:

Is there a way to disable notInArray Validator in Zend Framework 2. All the info on the internet shows how to disable the notInArray Validator in Zend Framework 1, for example in this fashion

If you do not want the InArray validator at all, you can disable this behavior by either calling setRegisterInArrayValidator(false) on the element, or by passing false to the registerInArrayValidator configuration key on element creation.

One the posts in stackoverflow can be found here

Unfortunately this is not possible in Zend Framework 2. So in case if anybody has a tip how this can be disabled.

回答1:

Since version 2.2, Zend Framework provide the ability to disable inArray validator calling:

$element->setDisableInArrayValidator(false);

or passing option to an element:

'disable_inarray_validator' => false


回答2:

I had the same problem and what i did is populate the element before validate it, for example:

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

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

This don't disable notInArray valitador but you can trick it.



回答3:

I came with the same case : while i was populating my html select element via ajax after alot of searching found no way to do it , ending with creating my own select form element , I will provide you with my changes :

    /**
     * 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:

I found this at this link and thought I would post it as I found it a great solution .... http://samsonasik.wordpress.com/2012/10/01/zend-framework-2-extending-zendform-to-add-select-multicheckbox-emaildate-textarea-and-radio-element/

don’t try to deactive the default validator. re-values the select options values before setData.

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

Saves the mess of deactivating the function if you need it elsewhere



回答5:

If you don't need validation at all, add required => false in InputFilter

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

worked for me..