0

0

Laravel 中如何验证多个数值字段的总和?

霞舞

霞舞

发布时间:2025-10-31 10:56:13

|

740人浏览过

|

来源于php中文网

原创

laravel 中如何验证多个数值字段的总和?

本文介绍了如何在 Laravel 中自定义验证规则,以确保多个数值输入字段的总和等于指定值。通过扩展 Laravel 的验证器,您可以创建一个可复用的验证规则,轻松应用于表单验证,确保数据的准确性和一致性。

在 Web 应用开发中,经常会遇到需要验证多个数值字段总和的场景,例如,确保用户输入的百分比分配总和为 100%。Laravel 框架提供了强大的验证功能,但默认情况下并没有直接支持此类验证。本文将介绍如何通过自定义验证规则来实现这一需求。

扩展 Laravel 验证器

Laravel 允许开发者通过 Validator::extend() 方法来扩展验证器,添加自定义的验证规则。以下是如何创建一个名为 sums_to 的验证规则,用于验证多个字段的总和是否等于指定值:

only($parameters); // 获取其他需要相加的字段的值
            $sum = floatval(array_sum(array_merge(array_values($otherParameters), [ $value ]))); // 计算总和
            return $sum === $expected; // 验证总和是否等于期望值
        });

        Validator::replacer('sums_to', function ($message, $attribute, $rule, $parameters) {
            return str_replace(':expected', $parameters[0], $message);
        });
    }
}

这段代码首先在 AppServiceProvider 的 boot 方法中注册了一个新的验证规则 sums_to。该规则的逻辑如下:

  1. 获取期望的总和: 从 $parameters 数组中取出第一个参数,作为期望的总和值。
  2. 获取其他字段的值: 使用 request()->only($parameters) 获取请求中其他需要参与计算总和的字段的值。
  3. 计算总和: 将当前字段的值和从请求中获取的其他字段的值合并,并计算总和。
  4. 验证总和: 比较计算出的总和与期望的总和,如果相等则验证通过,否则验证失败。

Validator::replacer 方法用于自定义验证失败时的错误消息,将 :expected 替换为期望的总和值。

讯飞智作-虚拟主播
讯飞智作-虚拟主播

讯飞智作是一款集AI配音、虚拟人视频生成、PPT生成视频、虚拟人定制等多功能的AI音视频生产平台。已广泛应用于媒体、教育、短视频等领域。

下载

使用自定义验证规则

注册完自定义验证规则后,就可以在 Controller 中使用了。以下是一个示例:

public function store(Request $request) {
    $data = $request->validate([
        'number1' => 'required|numeric|sums_to:100,number2,number3',
        'number2' => 'required|numeric|sums_to:100,number1,number3',
        'number3' => 'required|numeric|sums_to:100,number1,number2',
    ], [
        'sums_to' => 'The sum of number1, number2 and number3 must be :expected.',
    ]);

    $myDb = new Mynumber();
    $myDb->number1 = $data['number1'];
    $myDb->number2 = $data['number2'];
    $myDb->number3 = $data['number3'];
    $myDb->save();
}

在这个示例中,number1、number2 和 number3 三个字段都需要进行验证,确保它们的总和等于 100。 sums_to:100,number2,number3 表示 number1 字段需要与 number2 和 number3 字段的值相加,总和必须等于 100。

注意事项:

  • 确保在 AppServiceProvider 中注册了自定义验证规则。
  • 在验证规则中,第一个参数是期望的总和值,后面的参数是需要参与计算总和的字段名称。
  • 可以根据实际需求自定义错误消息。

总结

通过扩展 Laravel 的验证器,可以轻松实现对多个数值字段总和的验证。这种方法不仅代码简洁、易于理解,而且可以复用到多个表单验证场景中,提高开发效率。自定义验证规则是 Laravel 强大功能的体现,开发者可以根据实际需求灵活运用,构建健壮可靠的 Web 应用。

相关专题

更多
laravel组件介绍
laravel组件介绍

laravel 提供了丰富的组件,包括身份验证、模板引擎、缓存、命令行工具、数据库交互、对象关系映射器、事件处理、文件操作、电子邮件发送、队列管理和数据验证。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

316

2024.04.09

laravel中间件介绍
laravel中间件介绍

laravel 中间件分为五种类型:全局、路由、组、终止和自定。想了解更多laravel中间件的相关内容,可以阅读本专题下面的文章。

275

2024.04.09

laravel使用的设计模式有哪些
laravel使用的设计模式有哪些

laravel使用的设计模式有:1、单例模式;2、工厂方法模式;3、建造者模式;4、适配器模式;5、装饰器模式;6、策略模式;7、观察者模式。想了解更多laravel的相关内容,可以阅读本专题下面的文章。

369

2024.04.09

thinkphp和laravel哪个简单
thinkphp和laravel哪个简单

对于初学者来说,laravel 的入门门槛较低,更易上手,原因包括:1. 更简单的安装和配置;2. 丰富的文档和社区支持;3. 简洁易懂的语法和 api;4. 平缓的学习曲线。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

370

2024.04.10

laravel入门教程
laravel入门教程

本专题整合了laravel入门教程,想了解更多详细内容,请阅读专题下面的文章。

81

2025.08.05

laravel实战教程
laravel实战教程

本专题整合了laravel实战教程,阅读专题下面的文章了解更多详细内容。

64

2025.08.05

laravel面试题
laravel面试题

本专题整合了laravel面试题相关内容,阅读专题下面的文章了解更多详细内容。

67

2025.08.05

高德地图升级方法汇总
高德地图升级方法汇总

本专题整合了高德地图升级相关教程,阅读专题下面的文章了解更多详细内容。

68

2026.01.16

全民K歌得高分教程大全
全民K歌得高分教程大全

本专题整合了全民K歌得高分技巧汇总,阅读专题下面的文章了解更多详细内容。

127

2026.01.16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
PHP课程
PHP课程

共137课时 | 8.9万人学习

JavaScript ES5基础线上课程教学
JavaScript ES5基础线上课程教学

共6课时 | 8.3万人学习

PHP新手语法线上课程教学
PHP新手语法线上课程教学

共13课时 | 0.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号