我想过滤和验证每个项目,并验证整个项目,以检查是否有重复项。集合中有任意数量的文本输入。
$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的u f f e r e r开发人员出现。
在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'
)
)
));
通过这种方式,您可以从字段集添加集合元素,并且字段集输入过滤器和验证器将通过添加
public function getInputFilterSpecification() {}
来自Fieldset类。
您可以使用类似于的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);