How to remove a validator from a Form Element / Form Element ValidatorChain in Zend Framework 2?

前端 未结 2 1578
一整个雨季
一整个雨季 2021-01-06 07:33

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

2条回答
  •  旧时难觅i
    2021-01-06 08:05

    Well, you could just replace the validator chain with a new one. Let's say I have an element with two validators:

    • Zend\Validator\NotEmpty
    • Zend\Validator\EmailAddress

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

提交回复
热议问题