1

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

    $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 时,我想我要等很长时间才能看到另一个 ZF2 s̶u̶f̶f̶e̶r̶e̶r̶ 开发人员出现。

4

2 回答 2

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 和验证器将通过

public function getInputFilterSpecification() {}

来自 Fieldset 类。

于 2012-08-24T06:15:18.983 回答
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);
于 2017-04-10T09:03:33.677 回答