Laravel 5.x(master)表单请求验证响应为json


Laravel 5.x (master) Form Request validation response as a json

有没有办法将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();