从验证者以laravel中的json数据的形式提出响应

问题描述 投票:0回答:1

我有一个生成json的控制器,如果错误消息也变为json,如何从验证器中获取错误消息,

$this->validate($request,[
        'product_type' => 'required',
        'product_name' => 'required|string',
        'qty' => 'required',
    ]);
 -- code for saving process here --

 return response()->json([
            'status' => 'success',
            'msg'  => 'data succesfuly added'
        ]);

这是我在网络预览中的回报

errors: {product_type: ["The Product Type name field is required."], product_name: ["The address field is required."],…}
product_name: ["The product_name field is required."]
0: "The address field is required."
qty: ["The qty field is required."]
0: "The qty field is required."

我尝试使用ajax,但是没有用

success: function(response) {
                Object.keys(response.errors)
                            .forEach(function eachKey(key) {
                            createAlert(response.errors[key], "danger");
                            });            
                    }
json laravel object laravel-5 eloquent
1个回答
0
投票
$validator = Validator::make($request->all(), [
        'product_type' => 'required',
        'product_name' => 'required|string',
        'qty' => 'required',
]);
if ($validator->fails()) {

    //pass validator errors as errors object for ajax response
     return response()->json(['errors'=>$validator->errors()]);
}

您可以使用$validator->messages()$validator->errors()返回array,其中包含有关validator的所有信息,包括错误。 json函数采用array并将其编码为json字符串。

因此在客户端,您可以通过以下方式获得错误对象:

$.ajax().done(function(response){
    //check if response has errors object
    if(response.errors){

    // do what you want with errors, 

    }
});
© www.soinside.com 2019 - 2024. All rights reserved.