Disable notInArray Validator Zend Framework 2

2019-04-05 15:32发布

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.

5条回答
一纸荒年 Trace。
2楼-- · 2019-04-05 15:44

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
查看更多
smile是对你的礼貌
3楼-- · 2019-04-05 15:59

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..

查看更多
4楼-- · 2019-04-05 16:00

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楼-- · 2019-04-05 16:01

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;
    }
查看更多
可以哭但决不认输i
6楼-- · 2019-04-05 16:06

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.

查看更多
登录 后发表回答