【问题标题】:Does formatErrors not working anymore in Laravel 5.5?formatErrors 在 Laravel 5.5 中不再工作了吗?
【发布时间】:2017-12-20 17:41:08
【问题描述】:

我的 Request 类中有以下代码返回自定义消息。

public function formatErrors(\Illuminate\Contracts\Validation\Validator $validator) {
    if($validator->fails()) {
        $validator->errors()->add('Message', "Validation failed");
    }
    return parent::formatErrors($validator);
}

它在 Laravel 5.4 中返回错误消息,但似乎此功能在 Laravel 5.5 中不再工作

有人在 Laravel 5.5 中遇到过这个问题吗?

【问题讨论】:

    标签: laravel-5 laravel-5.5 laravel-validation laravel-response


    【解决方案1】:

    Upgrade guide你可以阅读:

    在 Laravel 5.5 中,所有异常,包括验证异常,都是 由异常处理程序转换为 HTTP 响应。此外, JSON 验证错误的默认格式已更改。新的 格式符合以下约定: ...

    所以你应该做的是在app\Exceptions\Handler.php文件中添加以下方法:

    protected function invalidJson($request, ValidationException $exception)
    {
        return response()->json([
            'message' => 'Validation failed',
            'errors' => $exception->errors(),
        ], $exception->status);
    } 
    

    显然你可能想要更多地调整这个方法,因为在以前的 Laravel 版本中它默认是这样的:

    return response()->json($exception->errors(), $exception->status);
    

    【讨论】:

    • 是否可以在特定请求类中返回验证异常自定义消息?
    • 应该可以在单个 Request 类中覆盖 failedValidation 方法
    猜你喜欢
    • 2018-09-16
    • 2016-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多