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
相关产品推荐
相关产品推荐

