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

Laravel Validator如何检测是否存在size.required等指定错误键?

实现方案

原有写法无法生效的原因是:Laravel的MessageBag类的has()方法默认按字段名匹配,不支持直接传入「字段名.验证规则」的格式查询。

以下是两种可行的实现方式:

方案1:通过failed()方法判断(推荐)

Laravel的Validator类提供的failed()方法会返回所有验证失败的规则明细,结构为以字段名为键、失败规则为值的二维数组,规则名为首字母大写的驼峰格式,示例代码如下:

// 必须先调用fails/validate方法触发验证执行
if ($validator->fails()) {
    $failedRules = $validator->failed();
    // 判断size字段是否触发required规则失败
    if (isset($failedRules['size']['Required'])) {
        // size.required对应的处理逻辑
    } 
    // 判断size字段是否触发numeric规则失败
    elseif (isset($failedRules['size']['Numeric'])) {
        // size.numeric对应的处理逻辑
    }
    // 判断size字段是否触发max规则失败
    elseif (isset($failedRules['size']['Max'])) {
        // size.max对应的处理逻辑
    }
}

方案2:通过错误消息键直接匹配

如果需要直接匹配你自定义的「字段.规则」格式的错误键,可以先获取所有错误键再做匹配判断,示例代码如下:

if ($validator->fails()) {
    $errorKeys = array_keys($validator->errors()->messages());
    if (in_array('size.required', $errorKeys)) {
        // 对应处理逻辑
    } elseif (in_array('size.numeric', $errorKeys)) {
        // 对应处理逻辑
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:06:01