10

有没有办法在 Zend Framework 2 中禁用 notInArray 验证器。互联网上的所有信息都显示了如何在 Zend Framework 1 中禁用 notInArray 验证器,例如以这种方式

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

可以在此处找到 stackoverflow 中的帖子之一

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

4

5 回答 5

9

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

$element->setDisableInArrayValidator(false);

或将选项传递给元素:

'disable_inarray_validator' => false
于 2013-05-13T13:29:03.523 回答
3

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

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

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

这不会禁用 notInArray 验证器,但您可以欺骗它。

于 2013-01-18T17:09:46.600 回答
0

如果您根本不需要验证,请添加required => falseInputFilter

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

为我工作..

于 2013-12-02T14:25:38.943 回答
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;
    }
于 2012-11-07T13:04:57.480 回答
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)) ;

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

于 2013-03-02T03:05:59.977 回答