Php 以JSON-Laravel 6的形式返回验证错误消息

Php 以JSON-Laravel 6的形式返回验证错误消息,php,laravel,validation,error-handling,laravel-6,Php,Laravel,Validation,Error Handling,Laravel 6,我想以JSON格式返回失败的验证尝试消息。我以前用过类似的东西,我相信是在拉威尔5号上用的 if ($validator->fails()) { return response()->json($validator->messages(), 200); } 然而,对于我们的新项目,我们使用的是Laravel6,上面只返回一个空白页 在Laravel6中,以下命令成功返回错误消息,尽管不是JSON中的错误消息 if ($validator->fails()

我想以JSON格式返回失败的验证尝试消息。我以前用过类似的东西,我相信是在拉威尔5号上用的

if ($validator->fails()) {    
    return response()->json($validator->messages(), 200);
}
然而,对于我们的新项目,我们使用的是Laravel6,上面只返回一个空白页

在Laravel6中,以下命令成功返回错误消息,尽管不是JSON中的错误消息

if ($validator->fails()) {  
    $msg = $validator->messages();
    dd($msg);
}
在Laravel 6中,
response()
的工作方式必须有所改变

你知道如何在Laravel6中以JSON格式返回验证消息吗?谢谢。

这应该行得通

 $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]);
                    }
这应该行得通

 $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]);
                    }
这里,

您可以在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');
        }
    }
});
这里,

您可以在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->errors()?因为我在合同中看不到这个方法。谢谢Joe,
returnresponse()->json($validator->errors(),200)
还会在Laravel 6中为我返回一个空白页。您的apache/Laravel日志是否显示任何错误?也许这将有助于了解您进行验证检查的整个方法。感谢mdexp,100%。事实上,我没有在日志中看到任何错误。我没有看到任何更改
$validator->errors()
应该返回messageBag实例,根据验证器契约,
$validator->messages()
使用的是哪个版本的Laravel?因为我在合同中看不到这个方法。谢谢Joe,
returnresponse()->json($validator->errors(),200)
还会在Laravel 6中为我返回一个空白页。您的apache/Laravel日志是否显示任何错误?也许这将有助于了解您进行验证检查的整个方法。感谢mdexp,100%。事实上,我没有在日志中看到任何错误。我没有看到任何更改。谢谢。这也为我返回了一个空白页。我认为这个问题与
response()
helper有关。我需要做些什么才能让它在Laravel 6中工作吗?@sdexp在您的控制器中添加
illighted\Http\Response
。谢谢。这也为我返回了一个空白页。我认为这个问题与
response()
helper有关。我需要做些什么才能让它在Laravel 6中工作吗?@sdexp在控制器中添加
illumb\Http\Response