📅  最后修改于: 2023-12-03 15:23:37.838000             🧑  作者: Mango
在 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()
处返回自定义响应的方法,希望对你有所帮助!