我在Laravel中通过创建自己的UserStoreRequest
类来实现表单验证,该类扩展了FormRequest
类.我在用Ajax.顺便说一句,每当验证失败时,Laravel会自动创建一个JSON响应并将其发送到浏览器,包括验证错误.问题是我需要帮助来拦截它.我读过文档,它说每当它遇到错误时,Laravel就会抛出这个异常:
照明\验证\验证异常.
我的问题是如何拦截Laravel自动生成的JSON响应,并以我自己的方式将内容放入其中.有出路吗?我能做点什么吗?
我在Laravel中通过创建自己的UserStoreRequest
类来实现表单验证,该类扩展了FormRequest
类.我在用Ajax.顺便说一句,每当验证失败时,Laravel会自动创建一个JSON响应并将其发送到浏览器,包括验证错误.问题是我需要帮助来拦截它.我读过文档,它说每当它遇到错误时,Laravel就会抛出这个异常:
照明\验证\验证异常.
我的问题是如何拦截Laravel自动生成的JSON响应,并以我自己的方式将内容放入其中.有出路吗?我能做点什么吗?
您可以通过重写UserStoreRequest
类中的failedValidation
方法来自定义错误响应.验证失败时调用此方法.默认情况下,它会抛出一个ValidationException
来生成您看到的JSON响应.
namespace App\Http\Requests;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Http\Exceptions\HttpResponseException;
class UserStoreRequest extends FormRequest
{
// ...
protected function failedValidation(Validator $validator)
{
$response = response()->json([
'data' => $validator->errors(),
'custom_message' => 'Your custom message here',
// Add more data if needed
], 422);
throw new HttpResponseException($response);
}
}
在本例中,当验证失败时,使用自定义JSON响应引发HttpResponseException
.422
状态码通常用于验证错误.请随时根据需要定制响应.