我想在 JSON 中返回失败的验证尝试消息。我以前用过这样的东西,它在 Laravel 5 上工作,我相信......
if ($validator->fails()) {
return response()->json($validator->messages(), 200);
}
但是,对于我们的新项目,我们使用Laravel 6,上面只返回一个空白页。
在 Laravel 6 中,以下内容成功返回错误消息,尽管不是 JSON 格式...
if ($validator->fails()) {
$msg = $validator->messages();
dd($msg);
}
在Laravel 6中response()
工作方式必须有所改变。
任何想法如何让验证消息在 Laravel 6 中以 JSON 形式返回?谢谢。
在这里,
if($validatedData->fails()){
return response()->json([
'status' => 'error',
'message' => $validatedData->getMessageBag()
],400);
}
您可以在 JSON 中抓取这些错误,这是示例代码
$.ajax({
url: "{{ route('your_route_name') }}",
method: 'post',
cache: false,
contentType: false,
processData: false,
data: formData,
success: function(response){
//....YOUR SUCCESS CODE HERE
},
error: function(response){
// HERE YOU CAN GET ALL THE ERRORS IN JSON
var data = JSON.parse(response.responseText);
if(data.message){
if(data.message.f_name){
$('input[name=f_name]')
.parents('.form-group')
.find('.help-block')
.html(data.message.f_name)
.css('display','block');
}else{
$('input[name=f_name]')
.parents('.form-group')
.find('.help-block')
.html('')
.css('display','none');
}
}else{
$('.help-block').html('').css('display','none');
}
}
});
这应该有效
$validator = Validator::make($request->all(), [
'email' => 'required|email',
'password' => 'required',
]);
if ($validator->fails()) {
$messages = $validator->errors()->all();
$msg = $messages[0];
return response()->json(['success_code' => 401, 'response_code' => 0, 'response_message' => $msg]);
}