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

Laravel新版本中ValidationRule如何获取验证结果与提示信息?

处理Laravel ValidationRule的验证结果与错误信息

针对新的ValidationRule接口,它的验证逻辑是通过validate方法中的$fail闭包传递错误信息的,而非旧Rule接口的passes和message分离模式。你可以按照以下方式捕获验证结果与错误信息:

修改循环代码如下:

foreach ($rules as $rule) {
    $ruleInstance = new $rule;

    if ($ruleInstance instanceof ValidationRule) {
        $errorMessage = null;
        // 创建闭包捕获错误信息
        $failCallback = function (string $message) use (&$errorMessage) {
            $errorMessage = $message;
        };

        // 执行验证逻辑
        $ruleInstance->validate($setting->field, $value, $failCallback);

        // 若捕获到错误则抛出验证异常
        if ($errorMessage !== null) {
            throw ValidationException::withMessages([$setting->field => $errorMessage]);
        }
    }

    if ($ruleInstance instanceof Rule && !$ruleInstance->passes($setting->field, $value)) {
        throw ValidationException::withMessages([$setting->field => $ruleInstance->message()]);
    }
}

核心逻辑说明

  • 通过引用传递,让$fail闭包能将错误信息赋值到外部的$errorMessage变量中;
  • 调用validate方法后,通过$errorMessage是否存在判断验证是否失败;
  • 错误信息直接从闭包中获取,无需额外调用message方法($fail传入的就是最终要展示的错误文本)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:59:54