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

Laravel表单验证失败时如何正确返回错误信息?

正确获取并返回Laravel表单验证错误信息的方法

你遇到的报错是因为withErrors()方法不属于Validator实例,它是用于将错误信息绑定到视图或重定向响应的方法,不能直接在Validator对象上调用。以下是两种正确的处理方式:

方法一:手动处理Validator实例的错误信息

直接通过Validator实例的errors()方法获取错误集合,再根据需求转换为数组或消息列表:

// Start validation 
$validator = Validator::make($request->all(), [
    'project_token'     =>  'required',
    'user_id'           =>  'required',
    'competitor_name'   =>  'required',
    'competitor_domain' =>  ['required','regex:/^(?!(www|http|https)\.)\w+(\.\w+)+$/'],
    'status'            =>  'required',
]);

// If validation is not successful
if( $validator->fails() ) {
    return response()->json([
        'success'   =>  false,
        // 获取按字段分组的错误信息数组
        'message'   =>  $validator->errors()->toArray()
        // 或者获取所有错误消息的一维数组:$validator->errors()->all()
    ], 422); // 推荐使用422状态码,符合REST规范中验证失败的语义
} else {
    // 验证通过后的逻辑
}

方法二:使用请求的validate()方法自动处理

Laravel提供了更简洁的方式,直接调用$request->validate(),验证失败时会自动返回包含错误信息的422状态码JSON响应,无需手动判断:

// 直接验证,失败自动返回错误响应
$validatedData = $request->validate([
    'project_token'     =>  'required',
    'user_id'           =>  'required',
    'competitor_name'   =>  'required',
    'competitor_domain' =>  ['required','regex:/^(?!(www|http|https)\.)\w+(\.\w+)+$/'],
    'status'            =>  'required',
]);

// 验证通过后,$validatedData包含过滤后的合法数据,继续后续逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 22:45:30