在 laravel 中以 json 数据的形式从验证器发出响应
Posted
技术标签:
【中文标题】在 laravel 中以 json 数据的形式从验证器发出响应【英文标题】:raises a response from the validator in the form of json data in laravel 【发布时间】:2020-03-25 12:59:06 【问题描述】:我有一个生成 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");
);
【问题讨论】:
【参考方案1】:$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,
);
【讨论】:
hay karan,为什么我发现错误“消息”:“找不到类 'App\\Http\\Controllers\\Vendor\\Validator'”, 添加use Illuminate\Support\Facades\Validator;
或 use Validator;
以上是关于在 laravel 中以 json 数据的形式从验证器发出响应的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP / Laravel 中以抽象的方式包装 JSON 响应
DB::table Select() 以字符串形式返回数组 Laravel