我正在使用Postman对我的API路由进行以下调用,一切正常工作,直到强制验证错误为止。返回的error对象不包含验证错误的完整列表,而是只有如下内容:
{"message":"The given data was invalid.","errors":{"email":["validation.email"],"password":["validation.min.string"]}}我想要的是,它应该返回完整的错误消息,而不是"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!');
}
}这是邮递员请求的屏幕截图。
发布于 2021-12-02 08:29:34
作为标准,我的评论是:
resources/lang/en/validation.php存在email和min存在。作为附带说明:
您可以将文件夹lang移到顶层,它仍然可以工作。
所以resources/lang/en会变成lang/en
发布于 2021-12-02 07:57:40
创建新的FormRequest类并重写下面的方法
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();它将只返回单个验证消息。
https://stackoverflow.com/questions/70195711
复制相似问题