我们在使用thinkphp6中的数据验证时,如果使用不多的话,会经常遇到校验不对,在这个小问题上折腾很多,索引就不用了。我还不如直接写if条件来的迅捷!!

下面把常见的校验方法进行一下整理:


protected $regex = ['float_two' => '/^[0-9]+(.[0-9]{1,2})?$/', //两位小数点'phone' => '/^1[3456789]\d{9}$/', //手机号
];/*** 定义验证规则* 格式:'字段名'    =>    ['规则1','规则2'...]** @var array*/protected $rule = ['id'        => 'require|gt:0', //大于0'phone'     => 'require|regex:phone', //手机号'type'      => ['require', 'In:0,1,2'], //必须是0、1、2中的一个'order_id'      => ['require','length'=>'1,32','alphaNum'], //1-32位字母数字'total_price'   => ['require','float'], //金额,浮点数'sort'          => 'require|number', //数字'region_info'   => 'array', //数组'sort'          => 'number' //数字'account'       => ['require', 'alphaDash'], //字母数字下划线,破折号'real_name|管理员姓名' => 'require|max:16','account|账号' => 'require|max:16|min:4','phone|联系电话' => 'isPhone', //自定义函数'image|分类图片' => 'max:128','is_banner|是否为Banner' => 'require|integer''status|状态' => 'require|in:0,1','phone' => 'require|number|mobile','integral_user_give|邀请好友赠送积分' => 'require|integer|>=:0','integral_community_give|发布种草可获得积分' => 'require|number|egt:0|elt:9999','undelives|不配送区域信息'=>'requireIf:undelivery,1|Array|undelive', //这是哪个高手写的,这么复杂,我也没看懂'full_reduction|满赠金额' => 'requireIf:send_type,1|float|>=:0','coupon_time|有效期限' => 'requireIf:coupon_type,0|integer|>:0',];//定义不同验证的提示信息,这个很简单,一般不会出错!protected $message = ['meal_id.require'     => '请传入套餐id','meal_id.number'      => '套餐id必须为数字','price.require'       => '请填写套餐金额','num.require'         => '请填写购买数量','num.number'          => '购买数量必须为数字','type.require'        => '请填写购买套餐类型'];//校验手机号 , 这里的data指的是全部的参数,自定义的可以和其它参数做比较protected function isPhone($val,$data){if ($val && !preg_match('/^1[3456789]{1}\d{9}$/', $val))return '请输入正确的手机号';elsereturn true;}//验证场景 ,变量的方式,这里说明 login只验证密码和账号, phone只验证手机号protected $scene = ['login' => ['password', 'account'],'phone' => ['phone']];//函数的方法public function sceneSave(){return $this->only(['realname','phone','address','province','city','district']);}

如何使用:

try{$this->validate(TrailValidate::class)->scene('apply')->check($data);
}catch(\Exception $e){return app('json')->fail($e->getMessage());
}

TrailValidate::class 是你的校验类,放哪里自己定。

scene('apply')  ,apply是你的场景。

check($data) ;  $data是你要校验的数据。

注意:验证场景有两种写法以,一种是数组,一种是函数。

当使用函数时必须是: scene+场景名(Save) 首字母大写,如果直接写场景名是识别不到的!。

以上rule汇总自多个开源系统,用来做备忘和大家共勉!

如果你有其它想法我们可以共同探讨!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916945.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916945.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916945.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一个FPGA寄存器接口自动化工具

FPGA模块越写越多,规范性和可移植性却堪忧。要是有一个工具可以根据模块接口描述文件生成verilog和c头文件就好了。苦苦搜寻找到了几款免费的工具,SystemRDL、cheby和rggen。笔者学习了下cheby和reksio,reksio是gui版的cheby,这是…

小程序中事件对象的属性与方法

在小程序中,事件处理函数的参数为事件对象(通常命名为 e),包含了事件相关的详细信息(如事件类型、触发元素、传递的数据等)。事件对象的属性和方法因事件类型(如点击、输入、触摸等)…

使用宝塔“PostgreSQL管理器”安装的PostgreSQL,如何设置远程连接?

安装 PostgreSQL 使用宝塔“PostgreSQL管理器”安装PostgreSQL,版本可以根据自己的需求来选择,我这里使用的是16.1 创建数据库 根据下图所示步骤创建数据库,其中 “访问权限”一定要选择“所有人”启用远程连接设置允许所有 IP 连接 listen_a…

论文:M矩阵

M矩阵是线性代数中的一个概念,它是一种特殊类型的矩阵,具有以下性质:非负的非对角线元素:矩阵的所有非对角线元素都是非负的,即对于矩阵MMM中的任意元素mijm_{ij}mij​,当i≠ji\neq jij时,有m…

跳跃表可视化深度解析:动态演示数据结构核心原理

跳跃表可视化深度解析:动态演示数据结构核心原理 一、跳跃表基础概念与核心优势 跳跃表(SkipList)是一种基于多层索引链表的数据结构,通过概率平衡实现高效的插入、删除和查找操作。其核心优势体现在: ​时间复杂度优…

《Sentinel服务保护实战:控制台部署与SpringCloud集成指南》

sentinel 介绍 Sentinel是阿里巴巴开源的一款服务保护框架,目前已经加入SpringCloudAlibaba中。官方网站: home | Sentinel Sentinel 的使用可以分为两个部分: 核心库(Jar包):不依赖任何框架/库,能够运行…

IBM Watsonx BI:AI赋能的下一代商业智能平台

产品概览 IBM Watsonx BI 是基于 watsonx 企业级 AI 与数据平台 构建的智能分析解决方案,专为现代化企业打造。它深度融合人工智能技术,突破传统 BI 工具的限制,通过自动化数据洞察、自然语言交互和预测分析,帮助企业在复杂数据环…

Python实现GO鹅优化算法优化GBRT渐进梯度回归树回归模型项目实战

说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取 或者私信获取。 1.项目背景 随着大数据和人工智能技术的快速发展,回归预测在金融、气象、能源等多个领域中扮演着至关…

深度学习计算(深度学习-李沐-学习笔记)

层和块 单一输出的线性模型:单个神经网络 (1)接受一些输入; (2)生成相应的标量输出; (3)具有一组相关 参数(parameters),更新这些参数…

leetcode热题——搜索二维矩阵Ⅱ

目录 搜索二维矩阵Ⅱ 题目描述 题解 解法一:暴力搜索 C 代码实现 复杂度分析 解法二:二分查找 C 代码实现 复杂度分析 解法三:Z字形查找 算法核心思想 算法步骤详解 C 代码实现 复杂度分析 搜索二维矩阵Ⅱ 题目描述 编写一个…

牛客 - 数组中的逆序对

描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 数据范围: 对于 50% 的数据, size≤104 s…

Linux 日志管理与时钟同步详解

Linux 日志管理与时钟同步详解 一、日志管理 1. 日志服务概述 Linux 系统中主要有两种日志服务,分别负责临时和永久日志的管理: systemd-journald:存储临时日志,服务器重启后日志会丢失,无需手动配置rsyslog&#xff1…

个人如何做股指期货?

本文主要介绍个人如何做股指期货?个人参与股指期货交易需要遵循一定的流程和规则,同时需充分了解其高风险、高杠杆的特点,并做好风险管理。个人如何做股指期货?一、了解股指期货基础股指期货是以股票价格指数为标的物的金融期货合…

设计模式-单例模式 Java

模式概述 单例模式(Singleton Pattern)是设计模式中最基础但应用最广泛的创建型模式之一,确保一个类仅有一个实例,并提供一个全局访问点。这种模式在需要全局唯一对象的场景中至关重要,如配置管理、线程池、数据库连接…

RFID 系统行业前沿洞察:技术跃迁与生态重构

在物联网与人工智能深度融合的时代,RFID(射频识别)系统正经历从 “单品识别工具” 到 “智能决策中枢” 的范式转变。这一技术凭借其非接触式数据采集、环境适应性强、全生命周期追溯等特性,在医疗、制造、农业、环保等领域引发连…

实现implements InitializingBean, DisposableBean 有什么用

在 Spring 框架中,实现 InitializingBean 和 DisposableBean 接口用于管理 Bean 的生命周期回调,分别控制 Bean 的初始化后和销毁前行为。具体作用如下:1. InitializingBean 接口public interface InitializingBean {void afterPropertiesSet…

GitLab 18.2 发布几十项与 DevSecOps 有关的功能,可升级体验【一】

沿袭我们的月度发布传统,极狐GitLab 发布了 18.2 版本,该版本带来了议题和任务的自定义工作流状态、新的合并请求主页、新的群组概览合规仪表盘、下载安全报告的 PDF 导出文件、中心化的安全策略管理(Beta)等几十个重点功能的改进…

如何快速把Clickhouse数据同步到Mysql

直接使用Clickhouse官方支持的Mysql引擎表的方式! 一、首先创建Mysql引擎表: CREATE TABLE saas_analysis.t_page_view_new_for_write (id Int64,shop_id Nullable(Int64),session_id Nullable(String),client_id Nullable(String),one_id Nullable(Str…

Kafka 重复消费与 API 幂等消费解决方案

Kafka 是一个高性能的分布式消息系统,但消费者重启、偏移量(offset)未正确提交或网络问题可能导致重复消费。API 幂等性设计则用于防止重复操作带来的副作用。本文从 Kafka 重复消费和 API 幂等性两个方面提供解决方案,重点深入探…

win11推迟更新

1、按住WINR2、输入以下命令:reg add "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsUpdate\UX\Settings" /v FlightSettingsMaxPauseDays /t reg_dword /d 10000 /f3、点击确定4、打开搜索框5、在搜索框里边输入更新,选择检查更新6、在暂停…