📜  在请求 laravel 中的 failedValidation() 处返回响应 - PHP (1)

📅  最后修改于: 2023-12-03 15:23:37.838000             🧑  作者: Mango

在请求 Laravel 中的 failedValidation() 处返回响应 - PHP

在 Laravel 的验证器中,如果验证失败,则会自动返回一个错误响应。然而,有时候我们需要在验证失败时返回自定义响应,比如将错误信息以 JSON 格式返回。

这时候,我们可以通过覆盖 Illuminate\Foundation\Http\FormRequest 类中的 failedValidation() 方法来实现自定义响应。

以下是示例代码:

<?php

namespace App\Http\Requests;

use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Http\Exceptions\HttpResponseException;
use Illuminate\Http\JsonResponse;

class MyRequest extends FormRequest
{
    /**
     * Get the response for a failed validation request.
     *
     * @param  Validator  $validator
     * @return void
     */
    protected function failedValidation(Validator $validator)
    {
        throw new HttpResponseException(
            response()->json(['errors' => $validator->errors()], JsonResponse::HTTP_UNPROCESSABLE_ENTITY)
        );
    }
}

在上面的代码中,我们重写了 failedValidation() 方法,并抛出了一个自定义的 HttpResponseException 异常,其中包含了一个 JSON 格式的错误响应。

我们可以将 MyRequest 类作为验证器使用:

<?php

namespace App\Http\Controllers;

use App\Http\Requests\MyRequest;

class MyController extends Controller
{
    /**
     * Store a newly created resource in storage.
     *
     * @param  MyRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function store(MyRequest $request)
    {
        // do something
    }
}

这样,当 MyRequest 验证失败时,将会返回一个 JSON 格式的错误响应。

以上就是在请求 Laravel 中的 failedValidation() 处返回自定义响应的方法,希望对你有所帮助!