我想过滤并验证每个项目并验证整体以检查没有重复项。集合中有任意数量的文本输入。
$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̶开发人员出现。
答案 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);