0

我正在使用 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 上,但是我错过了一些关于验证难题的各个部分如何组合/范围的信息。关于如何做到这一点的任何想法?依赖注入?

4

1 回答 1

0

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

if(!$isValid){
    // throw global error
    throw new sfValidatorError($this, "invalid");
}
else {
    return true;
}
于 2012-05-15T13:34:47.623 回答