I read this question on SO: \"how to disable inArray validator forms in zend framework2\" and was trying to find it out, but couldn\'t find any way to detach/remove the
I found this to work with 1.12.3
in my update form
$element = new My_Form_Element_Username('username');
$element->setValue('some-value');
$element->removeValidator('Db_NoRecordExists');
$this->addElement($element);
or
$this->addElement(new My_Form_Element_Username('username')
->setValue('some-value')
->removeValidator('Db_NoRecordExists');
My_Form_Element_Username just extends some Zend_Form_Element and has the validators defined.
Well, you could just replace the validator chain with a new one. Let's say I have an element with two validators:
And I want to remove the EmailAddress validator from it. You could do something like this:
// create new validator chain
$newValidatorChain = new \Zend\Validator\ValidatorChain;
// loop through all validators of the validator chained currently attached to the element
foreach ($form->getInputFilter()->get('myElement')->getValidatorChain()->getValidators() as $validator) {
// attach validator unless it's instance of Zend\Validator\EmailAddress
if (!($validator['instance'] instanceof \Zend\Validator\EmailAddress)) {
$newValidatorChain->addValidator($validator['instance'], $validator['breakChainOnFailure']);
}
}
// replace the old validator chain on the element
$form->getInputFilter()->get('myElement')->setValidatorChain($newValidatorChain);
Easy ;)