当前位置: 首页 > news >正文

Thinkph6中常用的验证方式实例

我们在使用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.dtcms.com/a/299719.html

相关文章:

  • 【时时三省】(C语言基础)用指向函数的指针作函数参数
  • 网络:应用层
  • 【硬件-笔试面试题】硬件/电子工程师,笔试面试题-30,(知识点:传输线特性阻抗,影响因素)
  • 【web应用】基于Vue3和Spring Boot的课程管理前后端数据交互过程
  • 1、虚拟机安装
  • InfluxDB Flux 查询协议实战应用(二)
  • Linux726 raid0,raid1,raid5;raid 创建、保存、停止、删除
  • Python 程序设计讲义(22):循环结构——for 循环
  • 使用FRP搭建内网穿透工具,自己公网服务器独享内外网端口转发
  • C++ APM异步编程模式剖析
  • 2025微前端架构研究与实践方案
  • 【6G新技术探索】AG-UI(Agent User Interaction Protocol) 协议介绍
  • Flutter开发实战之动画与交互设计
  • Java 注解(Annotation)详解:从基础到实战,彻底掌握元数据驱动开发
  • 详细介绍MySQL的索引类型
  • mybatis-plus从入门到入土(三):持久层接口之IService
  • 【MySQL】MySQL 缓存方案
  • 【Redis】Linux 配置Redis
  • 基于华为ENSP的OSPFLSA深入浅出-0
  • 从三维Coulomb势到二维对数势的下降法推导
  • Netty中DefaultChannelPipeline源码解读
  • LangChain vs LangGraph:从困惑到清晰的认知之路(扫盲篇)
  • (一)使用 LangChain 从零开始构建 RAG 系统|RAG From Scratch
  • RM-R1: Reward Modeling as Reasoning
  • Java java.util.Scanner 使用教程
  • 工作流的研究方向
  • (Python)文件储存的认识,文件路径(文件储存基础教程)(Windows系统文件路径)(基础教程)
  • 嵌入式分享#27:原来GT911有两个I2C地址(全志T527)
  • 数据湖产品全解析:2025 年主流解决方案选型指南
  • 酒店智能门锁SDK新V门锁系统接口函数[2025版]Delphi 7.0——东方仙盟硬件接口库