ZF2动态集合验证器

时间:2015-07-20 14:12:42

标签: doctrine-orm zend-framework2 zend-form zend-filter

我试图在集合中添加动态验证器,但我尝试过的所有内容都没有用。

如果我有 - 让我们说 - 集合中的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());

1 个答案:

答案 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));