我试图在集合中添加动态验证器,但我尝试过的所有内容都没有用。
如果我有 - 让我们说 - 集合中的3个字段集,我只希望第二个字段集(名称为" 1")具有必填字段。
$input_filter = new Filter\Edit();
$collection_input_filter = new CollectionInputFilter();
$orderDetailFilter = new Filter\OrderDetail($serviceManager);
$collection_input_filter->setInputFilter($orderDetailFilter);
$input_filter->add($collection_input_filter, 'details');
$this->setInputFilter($input_filter)
->setHydrator(new DoctrineHydrator($entityManager))
->setObject(new Order());
答案 0 :(得分:0)
检查一下: http://www.aronkerr.com/2013/11/zf2-form-collection-validation-unique.html 他为fieldset集合中的元素添加了唯一值。他扩展了InputCollectionFilter。 您可以采用相同的方式进行自定义密钥验证。
您必须从CollectionInputFilter扩展isValid方法。 编写自己的CollectionInputFilter并从Zend \ InputFilter \ CollectionInputFilter扩展它。
添加您自己的属性:
protected validateFieldsetKeys = array()
例如 使用setter方法。
当您添加CollectionInputfilter(在工厂或控制器中)时,只需调用您自己的,并添加如下字段集:
$collection_input_filter = new CollectionInputFilter();
$collection_input_filter->setValidateFieldsetKeys(array(2,3));