【发布时间】:2013-04-27 13:09:50
【问题描述】:
我在 SO:“how to disable inArray validator forms in zend framework2”上阅读了这个问题,并试图找出答案,但找不到任何方法来分离/删除 InArray 验证器。但是InArray 只是一个 验证器。那么如何从表单元素的验证器列表中移除一个验证器呢?
我可以得到验证器:
$myElement = $form->getInputFilter()->get('city');
$validatorChain = $cityElement->getValidatorChain();
$validators = $validatorChain->getValidators();
然后也许可以使用验证器取消设置数组元素,我想删除,然后将结果数组传递回 Input 对象和表单元素。但它真的很脏,肯定不是推荐的方式。
那么如何从表单元素中移除验证器呢?
【问题讨论】:
-
你试过 $inputFilter = new InputFilter(); $inputFilter->remove($name);例如,您是否使用 $factory = new InputFactory();?
-
谢谢!是的,它有效:
$formInputFilter = $form->getInputFilter(); $formInputFilter->remove('city'); $formInputFilter->add((new Zend\InputFilter\Factory())->createInput(array( 'name' => 'city', 'required' => true, )));但是我必须在视图脚本中创建一个Input。脏。 -
在你看来只需 $newInputFilter = new InputFilter(); //.. 你的东西.. $inputFilter = new InputFilter(); $inputFilter->add($newInputFilter, "yourElement"); $form->setInputFilter($inputFilter);但在你的控制器中会更好!
-
是的,唯一干净(-er)的方法似乎扩展了
InputFilter和/或Input类,也许还有Element。
标签: zend-framework2 validation zend-form-element zend-validate