Laravel 8 API 调用未正确返回验证错误

Laravel 8 API call not returning validation errors correctly

我正在使用 Postman 对我的 API 路由进行以下调用,一切正常,直到我强制验证错误。错误对象 returned 不包含验证错误的完整列表,而只有这样的内容:

{"message":"The given data was invalid.","errors":{"email":["validation.email"],"password":["validation.min.string"]}}

我想要的是 return 完整的错误消息而不是“validation.min.string”。

这是我的控制器方法:

public function __invoke(Request $request)
    {
        $credentials = $request->validate([
            'email' => 'required|email|max:255',
            'password' => 'required|min:8'
        ]);

        $credentials['status'] = true;

        if (Auth::attempt($credentials)) {
            return response()->json('login success!');
        } else {
            return response()->json('login failure!');
        }
    }

这是邮递员请求的屏幕截图

Screenshot here

创建新的 FormRequest class 并覆盖

中的以下方法
protected function failedValidation(Validator $validator) {
        $response = [
            'status' => false,
            'message' => $validator->errors()->first(),
        ];
        throw new HttpResponseException(response()->json($response, 422));
    }

或使用此代码:

use Illuminate\Support\Facades\Validator;

$validator = Validator::make($request->all(), [
   // your validation rules
])->stopOnFirstFailure(true);

$validator->validate();

它会return只有一条验证消息

作为我的评论:

  1. 确保文件 resources/lang/en/validation.php 存在
  2. 如果是,请确保键 emailmin 存在

旁注:

您可以将文件夹 lang 移动到顶层,它仍然有效。
所以 resources/lang/en 会变成 lang/en