You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中不使用Validator类如何捕获验证错误?

Laravel中使用$request->validate()捕获验证错误并返回JSON

当你使用$request->validate()方法时,验证失败会自动抛出ValidationException异常,你可以通过try-catch捕获异常的方式获取错误信息,再转为JSON返回。

具体实现步骤:

  1. 先引入ValidationException类(如果控制器顶部未自动引入):
use Illuminate\Validation\ValidationException;
  1. 在控制器方法中用try-catch包裹验证逻辑:
public function yourMethod(Request $request)
{
    try {
        // 执行验证规则
        $request->validate([
            'name' => 'required',
            'email' => 'required|email',
            'age' => 'required|min:3',
            'number' => 'required|numeric',
        ]);

        // 验证通过后的业务逻辑
        // ...

    } catch (ValidationException $e) {
        // 从异常对象中提取验证错误信息
        $errors = $e->validator->messages();

        // 返回自定义JSON响应
        return response()->json([
            'status' => 400,
            'errors' => $errors
        ], 400);
    }
}

补充说明:

  • $e->validator->messages()返回的MessageBag对象,和你使用Validator::make()时$validator->messages()的格式完全一致,前端可以直接解析。
  • Laravel默认对AJAX/JSON请求,验证失败时会自动返回状态码422的JSON错误响应,但如果你需要自定义响应格式(比如指定status为400),就需要手动捕获异常处理。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:45:47