使用集合时如何向InputFilter添加条目?

时间:2012-08-23 12:42:18

标签: php zend-framework2

我想过滤并验证每个项目并验证整体以检查没有重复项。集合中有任意数量的文本输入。

    $this->add(array(
        'type' => 'Zend\Form\Element\Collection',
        'name' => 'aliasList',
        'options' => array(
            'label' => 'Alias',
            'count' => 2,
            'allow_add' => true,
            'target_element' => array(
                'type' => 'Zend\Form\Element\Text'
            )
        )
    ));

我尝试添加下面的代码,但我的手指非常难过。它显然不起作用。它希望可能有一个选项,如'oneach' = true

    $inputFilter->add($factory->createInput(array(
        'name' => 'aliasList',
        'required' => false,
        'filters' => array(
            array('name' => 'StripTags'),
            array('name' => 'StringTrim'),
        ),
    )));

我还打算为有效URI添加验证器,并在复制时失败。不幸的是,因为我正在使用ZF2,我想我将等待很长时间让另一个ZF2s̶u̶f̶f̶e̶r̶e̶r̶开发人员出现。

2 个答案:

答案 0 :(得分:3)

这可能无法以1:1的比例帮助您解决问题,但您可能希望尝试通过将集合添加为字段集来解决此问题。在大多数情况下,您添加到集合中的任何内容都属于不同的类型,因此,仅通过逻辑,应该位于单独的字段集中。

因此您可能想尝试这种方法。我假设您知道该博客,如果不是这里的链接http://www.michaelgallego.fr/blog/?p=190

 $this->add(array(
    'type' => 'Zend\Form\Element\Collection',
    'name' => 'categories',
    'options' => array(
        'label' => 'Please choose categories for this product',
        'count' => 2,
        'should_create_template' => true,
        'allow_add' => true,
        'target_element' => array(
            'type' => 'Application\Form\CategoryFieldset'
        )
    )
));

这样您就可以从Fieldset添加Collection Elements,并通过

添加fieldset inputFilters和validators。
public function getInputFilterSpecification() {}
来自Fieldset-Class的

答案 1 :(得分:0)

您可以使用smt:

 $inputFilter = new InputFilter();
 $inputFilter->add($factory->createInput(array(
    'name' => 'aliasList',
    'required' => false,
    'filters' => array(
        array('name' => 'StripTags'),
        array('name' => 'StringTrim'),
    ),
 )));

 $collectionFilter = new CollectionInputFilter();
 $collectionFilter->setInputFilter($inputFilter);