Zend form zend Framwork 2 inArray元素验证程序

Zend form zend Framwork 2 inArray元素验证程序,zend-form,zend-framework2,Zend Form,Zend Framework2,如何禁用Zend\Element\Select的inArray验证程序? 我无法删除此标准验证器选择元素 编辑: 我要做的是用ajax填充一个如此动态的select元素。这样,inArray将丢失引用字段值 有人知道用ajax填充此元素的正确方法吗?实际上,现在不可能禁用验证程序;但是,您可以覆盖select元素以删除此特定情况下的验证器: use Zend\Form\Element\Select; class MySelect extends Select { public func

如何禁用Zend\Element\Select的inArray验证程序? 我无法删除此标准验证器选择元素

编辑:

我要做的是用ajax填充一个如此动态的select元素。这样,inArray将丢失引用字段值


有人知道用ajax填充此元素的正确方法吗?

实际上,现在不可能禁用验证程序;但是,您可以覆盖select元素以删除此特定情况下的验证器:

use Zend\Form\Element\Select;

class MySelect extends Select {
    public function getValidator() {
        return $this->validator;
    }
}

基本上,当前select元素的关键问题是如果验证器不存在;它会创造它。这里的另一个选项是手动设置验证器;您可能要做的是手动创建一个inarayvalidator,并使用来自AJAX调用的潜在选项填充它。在这种情况下,您需要在上面添加一个setter。

自2.2版以来,Zend Framework提供了禁用inArray验证程序的功能调用:

$element->setDisableInArrayValidator(false);
或将选项传递给元素:

'disable_inarray_validator' => false

这个验证器问题的本质是什么?这只是一个安全问题,可以查看提交的值是否实际在您的值数组中。这是件好事。也许试着解释一下你的问题是什么,我们会为你提供更好的解决方案。此外:接受率!我正在用ajax填充select元素。换句话说,是动态的。当验证器尝试执行其工作时,这会生成错误。