有没有办法在Zend Framework 2中禁用notInArray Validator.Internet上的所有信息都显示了如何在Zend Framework 1中禁用notInArray Validator,例如以这种方式
如果您根本不需要InArray验证器,则可以通过在元素上调用setRegisterInArrayValidator(false)或在元素创建时将false传递给registerInArrayValidator配置键来禁用此行为。
可以找到stackoverflow中的帖子here
不幸的是,这在Zend Framework 2中是不可能的。所以,如果有人提示如何禁用它。
答案 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,
));
为我工作..