【问题标题】:zend framwwork 2 inArray element validator boring数组元素验证器中的 zend 框架 2 无聊
【发布时间】:2013-05-13 21:32:50
【问题描述】:

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

编辑:

我想要做的是用 ajax 填充一个如此动态的选择元素。这样 inArray 就会丢失参考字段值。

有谁知道用 ajax 填充这个元素的正确方法是什么?

【问题讨论】:

  • 这个验证器问题的本质是什么?这只是一个安全的事情,看看提交的值是否真的在你的值数组中。这是好事。也许尝试解释您的问题是什么,我们为您提供更好的解决方案。此外:接受率!
  • 我正在使用 ajax 填充选择元素。换句话说,动态的。当验证器尝试在数组中完成他的工作时,这会产生错误。

标签: zend-form zend-framework2


【解决方案1】:

目前看来实际上不可能禁用验证器;但是,您可以覆盖 select 元素,以便能够删除此特定情况的验证器:

use Zend\Form\Element\Select;

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

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

【讨论】:

    【解决方案2】:

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

    $element->setDisableInArrayValidator(false);
    

    或将 option 传递给元素:

    'disable_inarray_validator' => false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-06
      • 2013-02-01
      • 2012-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      相关资源
      最近更新 更多