我已经制作了自定义上传字段来自动提取zip文件。我无法弄清楚如何抛出最终用户可读的“漂亮”错误消息。
我希望错误来自saveTemporaryFile方法。
例如(这样的事情会很棒):
返回$ this-> setError(“我的自定义错误”);
答案 0 :(得分:0)
错误消息通常在validate
函数中抛出,您可以访问表单字段的Validator
对象。例如:
<?php
class MyUploadField extends UploadField {
// ...
private $temporaryFileSaveSuccessful = false;
private function saveTemporaryFile() {
// Do extract logic
// set $this->temporaryFileSaveSuccessful appropriately
}
public function validate($validator) {
if(!$this->temporaryFileSaveSuccessful) {
$validator->validationError('ExtractionUnsuccessful',
'Unable to extract your zip file',
'validation'
);
return false;
}
return parent::validate($validator);
}
// ...
}
但是,这有一个问题是在表单提交时调用了validate
函数,因此根据您的代码saveTemporaryFile
可能尚未运行。您可以通过创建Form
子类并覆盖httpSubmission
函数来提前运行提取。