【问题标题】:Laravel form request JSON response: Chinese Language not converted to UTFLaravel 表单请求 JSON 响应:中文未转换为 UTF
【发布时间】:2020-02-14 16:01:52
【问题描述】:

我不确定我是如何做到这一点的。我的网络应用程序是英文和中文的。英文还可以,但是中文就麻烦了。

现在,我正在使用 Laravel 默认身份验证,它工作正常。问题是当我选择中文时,请求类的 JSON 响应没有转换为 UTF,响应看起来像这样:

{"message":"The given data was invalid.","errors":{"first_name":["\u540d\u5b57\u4e3a\u5fc5\u586b\u9879"],"last_name":["\u5fc5\u987b\u586b\u5199\u59d3\u6c0f"],"email":["\u7535\u5b50\u90ae\u4ef6\u4e3a\u5fc5\u586b\u9879"],"password":[""],"terms_conditions":[""]}}

我想将此响应转换为 UTF 字符串。我知道我可以使用 json_encode 做到这一点。

json_encode($data, JSON_UNESCAPED_UNICODE); 

Laravel 请求类生成响应,但我不确定如何使其工作。默认函数位于 Laravel 框架文件夹中,我不想编辑该部分。如果你曾经遇到过这种情况,请分享你是如何解决这个问题的。

注意 我的请求是注册表单,但不是常规的 HTTP 请求,而是通过 Ajax 调用提交表单。

【问题讨论】:

    标签: php laravel laravel-request


    【解决方案1】:

    经过 5 个小时的搜索和谷歌搜索,我得出了这个解决方案,实际上你可以通过重写这个函数来返回 FormRequest 类的响应:

    protected function failedValidation(Validator $validator) {
       $data = ['error' => json_encode($validator,JSON_UNESCAPED_UNICODE)];
       throw new HttpResponseException(response($data,422));
    }
    

    确保您也导入:

    use Illuminate\Http\Exceptions\HttpResponseException;
    

    在你的班级中名列前茅。

    【讨论】:

      猜你喜欢
      • 2016-03-18
      • 2021-06-10
      • 2017-05-18
      • 2021-11-26
      • 1970-01-01
      • 2019-09-26
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多