ZF2 dynamic collection validators

214 Views Asked by At

I've tried to add a dynamic validator to a collection but everything I've tried hasn't worked.

If I have - let's say - 3 fieldsets in a collection, I only want the second fieldset (with name "1") to have a required field.

$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

There are 1 best solutions below

0
On

Check this: http://www.aronkerr.com/2013/11/zf2-form-collection-validation-unique.html He adding unique values for an element in a fieldset collection. He extend the InputCollectionFilter. You can do the same way for your custom key validation.

You have to extend the isValid Method from the CollectionInputFilter. Write your own CollectionInputFilter and extend it from the Zend\InputFilter\CollectionInputFilter.

Add your own property:

protected validateFieldsetKeys = array()

for Example with a setter Method.

When you´re adding your CollectionInputfilter (in your factory or controller), just call your own and add your fieldsetkeys like this:

$collection_input_filter = new CollectionInputFilter();
$collection_input_filter->setValidateFieldsetKeys(array(2,3));