laravel 5.5 里面怎么修改表单验证 返回的状态和内容

之前使用laravel 5.1的时候,可以在http\Requests\requests.php里面重写response方法。
升级为laravel5.5 之后,我看了下。FormRequest里面已经没有response方法了。
5.5的错误定义在\Illuminate\Validation\ValidationException里面。

我想在FormRequest抛出异常的时候,自定义http状态码。和内容

JellyBool

我看了一下,貌似 自定义http状态码 这个有点难自定义。内容倒是OK

fengdie 回复 JellyBool

是的,我尝试重写failedValidation也不管用。

    protected function failedValidation(Validator $validator)
    {
        if ($this->ajax() || $this->wantsJson()) {
            return new JsonResponse([
                'error' => array_values($this->messages())[0]
            ], 200);
        }
    }
fengdie 回复 JellyBool

搞定了。laravel5.5里面可以在http\exceptions::render里面拦截form request 抛出的异常。