php - 过滤器和验证器被添加了两次

标签 php zend-framework2 zend-form2

我在 zf2 github 上写过它还没有人回答。但也许这不是错误,我做错了什么。这是我的代码:

字段集

class TestFieldset extends Fieldset implements
    InputFilterProviderInterface
{
    public function __construct($name)
    {
        parent::__construct($name);

        $this->add(array(
            'type' => 'text',
            'name' => 'test'
        ));
    }

    public function getInputFilterSpecification() {
        return array(
            'test' => array(
                'filters' => array(
                    array('name' => 'StringTrim')
                ),
                'validators' => array(
                    array('name' => 'NotEmpty')
                )
            )
        );
    } 
}

表单

class TestForm extends Form
{
    public function __construct($name = null, $options = array()) {
        parent::__construct($name, $options);

        $fieldset = new TestFieldset('test-fieldset');

        $this->add($fieldset);
    }
}

Controller Action

public function indexAction()
{
    $form = new \CRM\Form\TestForm;    
    $form->setData(array('test-fieldset' => array('test' => 'test value')));
    $form->isValid();

    $inputFilter = $form->getInputFilter()
            ->get('test-fieldset')
            ->get('test');

    $filters = $inputFilter->getFilterChain()
        ->getFilters();

    $validators = $inputFilter->getValidatorChain()
        ->getValidators();

    var_dump($filters);
    var_dump($validators);
}

结果

object(Zend\Stdlib\PriorityQueue)[678]
  protected 'queueClass' => string 'Zend\Stdlib\SplPriorityQueue' (length=28)
  protected 'items' => 
    array (size=2)
      0 => 
        array (size=2)
          'data' => 
            object(Zend\Filter\StringTrim)[682]
              ...
          'priority' => int 1000
      1 => 
        array (size=2)
          'data' => 
            object(Zend\Filter\StringTrim)[693]
              ...
          'priority' => int 1000
  protected 'queue' => 
    object(Zend\Stdlib\SplPriorityQueue)[683]
      protected 'serial' => int 2147483645
array (size=2)
  0 => 
    array (size=2)
      'instance' => 
        object(Zend\Validator\NotEmpty)[686]
          protected 'constants' => 
            array (size=13)
              ...
          protected 'messageTemplates' => 
            array (size=2)
              ...
          protected 'options' => 
            array (size=1)
              ...
          protected 'value' => string 'test value' (length=10)
          protected 'abstractOptions' => 
            array (size=7)
              ...
      'breakChainOnFailure' => boolean false
  1 => 
    array (size=2)
      'instance' => 
        object(Zend\Validator\NotEmpty)[697]
          protected 'constants' => 
            array (size=13)
              ...
          protected 'messageTemplates' => 
            array (size=2)
              ...
          protected 'options' => 
            array (size=1)
              ...
          protected 'value' => string 'test value' (length=10)
          protected 'abstractOptions' => 
            array (size=7)
              ...
      'breakChainOnFailure' => boolean false

如您所见,有两个 StringTrim 过滤器和两个 NotEmpty 验证器。这很烦人,尤其是当我使用 File\RenameUpload 过滤器并尝试重命名和移动已重命名的文件时。

最佳答案

此错误已在 zf 2.2.5 中修复 https://github.com/zendframework/zf2/issues/5270

关于php - 过滤器和验证器被添加了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19045681/

相关文章:

php - Zend Framework 2中的路由,跳过url中的 'index'操作但获取id

php - 如何在 zend 框架中访问数据文件夹中的文件?

zend-framework2 - ZF2 注册无效工厂

php - 如何在 Zend 框架 2 中为 Zend/Form 生成的标签添加属性

java - 支持 XEP-133 的 XMPP 库(管理员命令)

php - 尝试在 Yii2 中加载双列表框时出错

php - Zend框架2 : Digits vs Int validator

PHP OCI8 为 'IN' 语句绑定(bind)(未知数量)参数

php - 设置多语言wordpress