2012-04-19 34 views
0

我使用的Symfony 1.4允許用戶導入各種類型的CSV文件,我已經決定整合驗證和上傳文件的實際內容消毒成自定義驗證 - 自定義驗證將延長sfValidatorFile。另外,當文件包含錯誤時,我想在表單上拋出全局錯誤,而不是將它們顯示爲字段/本地錯誤 - 並且 - 能夠同時顯示給定的多個驗證錯誤導入文件。從Symfony自定義驗證器中拋出全局錯誤的優雅方法?

我很確定我可以通過使用Post Validator來完成這項工作,但這看起來並不適合Post Validator(因爲我真的只需要一個表單字段的知識就可以執行我的自定義驗證),但更重要的是,我想要一些更優雅的東西,將所有額外的驗證工作打包到單個自定義文件驗證器中。

,而不是例如:

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

我只是想這樣做:

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

...裏面還myFancyValidator遇到驗證錯誤添加到形式的集合全局錯誤。

我已經嘗試了幾種不同的方法來從我的自定義驗證器內的錯誤推到窗體的globalErrors,但我缺少關於確認拼圖FIT /範圍的各部分是如何在一起的東西。有關如何完成此任何想法?依賴注入?

回答

0

在您自定義的驗證,如投擲sfValidatorError對象:

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