Silverstripe 3使用漂亮的错误消息扩展上传字段

时间:2014-10-09 01:30:51

标签: silverstripe

我已经制作了自定义上传字段来自动提取zip文件。我无法弄清楚如何抛出最终用户可读的“漂亮”错误消息。

我希望错误来自saveTemporaryFile方法。

例如(这样的事情会很棒):

返回$ this-> setError(“我的自定义错误”);

1 个答案:

答案 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函数来提前运行提取。