禁用notInArray Validator Zend Framework 2

时间:2012-11-01 09:58:12

标签: zend-form zend-framework2 validation

有没有办法在Zend Framework 2中禁用notInArray Validator.Internet上的所有信息都显示了如何在Zend Framework 1中禁用notInArray Validator,例如以这种方式

如果您根本不需要InArray验证器,则可以通过在元素上调用setRegisterInArrayValidator(false)或在元素创建时将false传递给registerInArrayValidator配置键来禁用此行为。

可以找到stackoverflow中的帖子here

不幸的是,这在Zend Framework 2中是不可能的。所以,如果有人提示如何禁用它。

5 个答案:

答案 0 :(得分:9)

从版本2.2开始,Zend Framework提供了禁用inArray验证器调用的功能:

$element->setDisableInArrayValidator(false);

或将选项传递给元素:

'disable_inarray_validator' => false

答案 1 :(得分:3)

我有同样的问题,我所做的是在验证之前填充元素,例如:

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

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

这不会禁用notInArray valitador但你可以欺骗它。

答案 2 :(得分:0)

我遇到了同样的情况: 我在很多搜索后找不到任何方法通过ajax填充我的html选择元素,最后创建我自己的选择表单元素,我将为您提供我的更改:

    /**
     * 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;
    }

答案 3 :(得分:0)

我在这个链接上找到了这个链接并认为我会发布它,因为我发现它是一个很好的解决方案.... 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)) ;

如果您在其他地方需要,可以省去停用该功能的麻烦

答案 4 :(得分:0)

如果您根本不需要验证,请在InputFilter中添加required => false

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

为我工作..