【问题标题】:An elegant way to throw global errors from a Symfony custom validator?从 Symfony 自定义验证器中抛出全局错误的优雅方法?
【发布时间】:2012-04-19 00:54:04
【问题描述】:

我正在使用 Symfony 1.4 来允许用户导入各种类型的 CSV 文件,并且我决定将上传文件的实际内容的验证和清理合并到自定义验证器中 - 自定义验证器将扩展 sfValidatorFile。

另外,当文件包含错误时,我想在表单上抛出全局错误,而不是将它们显示为字段/本地错误 - 并且 - 能够同时显示给定导入的许多验证错误文件。

我很确定我可以通过使用 Post Validator 来完成这项工作,但这似乎不太适合 Post Validator(因为我真的只需要了解一个表单字段即可执行我的自定义验证),但更重要的是,我想要一些更优雅的东西,将所有额外的验证工作打包到一个自定义文件验证器中。

例如,而不是:

$this->validatorSchema['file'] = new sfValidatorFile( … );
$this->validatorSchema->setPostValidator(new myFancyValidator( … ));

我只想做这样的事情:

$this->validatorSchema['file'] = new myFancyValidator( … );

...并将 myFancyValidator 中遇到的验证错误添加到表单的全局错误集合中。

我已经尝试了几种不同的方法来将错误从我的自定义验证器中推送到表单的 globalErrors 上,但是我错过了一些关于验证难题的各个部分如何组合/范围的信息。关于如何做到这一点的任何想法?依赖注入?

【问题讨论】:

    标签: php forms symfony1 validation


    【解决方案1】:

    在您的自定义验证器中抛出一个 sfValidatorError 对象,例如:

    if(!$isValid){
        // throw global error
        throw new sfValidatorError($this, "invalid");
    }
    else {
        return true;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-02
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 2015-12-23
      • 1970-01-01
      • 2019-02-14
      相关资源
      最近更新 更多