有没有办法将Form Request erros作为json返回?
我正在制作AngularJS的API,并且我在错误标志方面有问题
以下是我的规则:
class CreateProductRequest extends Request
{
public function rules()
{
return [
'code'=>'required|unique:products',
'style'=>'required|max:12',
'measure'=>'required|max:12',
];
}
这是CreateProductRequest 的响应
{
code: [0: "Code is required"],
style:[0: "Style is required"],
measure:[ 0: "Measure is required"]
}
我希望在控制器上得到与$validator->errors()->all()相同的结果,如下所示:
"messages": [
"Code is required",
"Style is required",
"Measure is required"
]
如何从Form Request获得此结果?
Laravel版本:主
表单请求错误已作为AJAX请求的json返回。但是,为了实现您想要的结构,您必须覆盖vendor/laravel/framework/src/IIlluminate/Foundation/Http/FormRequest.php 中的响应函数
从那里复制函数,并将其粘贴到app/Http/Request/Request.php中的Request类中。更改以下行:
return new JsonResponse($errors, 422);
到此:
$messages = array();
foreach ($errors as $element) {
foreach ($element as $element_error) {
$messages[] = $element_error;
}
}
$response['messages'] = $messages;
$response['status'] = 'error';
return new JsonResponse($response, 200);
您可以返回已经使用的任何其他状态代码,而不是200,可能来自4xx系列。将此添加到此文件的顶部:
use Illuminate'Http'JsonResponse;
尝试这个
return $validator->errors()->all()->toJson();