gpt4 book ai didi

zend-framework2 - 如何从 Zend Framework 2 中的表单元素/表单元素 ValidatorChain 中删除验证器?

转载 作者:行者123 更新时间:2023-12-04 23:04:24 25 4
gpt4 key购买 nike

我在 SO 上阅读了这个问题:“how to disable inArray validator forms in zend framework2”并试图找到它,但找不到任何方法来分离/删除 InArray验证器。但是InArray只是一个验证器。那么如何从表单元素的验证器列表中删除验证器呢?

我可以获得验证器:

$myElement = $form->getInputFilter()->get('city');
$validatorChain = $cityElement->getValidatorChain();
$validators = $validatorChain->getValidators();

然后也许可以使用验证器取消设置数组元素,我想删除,然后将结果数组传递回 Input 对象和表单元素。但它真的很脏,肯定不是推荐的方式。

那么如何从表单元素中删除验证器呢?

最佳答案

好吧,您可以用新的验证器链替换验证器链。假设我有一个带有两个验证器的元素:

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

  • 我想从中删除 EmailAddress 验证器。你可以这样做:
    // 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);

    简单 ;)

    关于zend-framework2 - 如何从 Zend Framework 2 中的表单元素/表单元素 ValidatorChain 中删除验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16252520/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com