新闻中心
ThinkPHP验证器怎么编写_ThinkPHP验证器规则定义及数据校验实战
ThinkPHP验证器通过继承think\Validate类定义规则和提示信息,支持require、email、number等内置规则,并可设置场景化验证。在控制器中实例化验证器并调用check方法校验数据,错误时返回getError信息,保障数据安全。

ThinkPHP 的验证器是
用于数据校验的重要工具,尤其在接收用户提交的表单或接口参数时,能有效防止非法或不完整数据进入系统。本文将带你了解 ThinkPHP 验证器的编写方式、规则定义方法,并通过实战示例掌握实际应用。
验证器的基本结构
在 ThinkPHP 中,通常通过继承 think\Validate 类来创建自定义验证器。验证器中主要包含两个属性:rule(定义验证规则)和 message(定义错误提示信息)。
以下是一个基础的验证器类结构:
namespace app\validate;
use think\Validate;
class UserValidate extends Validate
{
protected $rule = [
'name' => 'require|max:25',
'email' => 'require|email',
'age' => 'number|between:1,120',
];
protected $message = [
'name.require' => '姓名不能为空',
'name.max' => '姓名最多不能超过25个字符',
'email.require' => '邮箱必须填写',
'email.email' => '邮箱格式不正确',
'age.number' => '年龄必须是数字',
'age.between' => '年龄必须在1到120之间',
];
}
常用验证规则说明
ThinkPHP 提供了丰富的内置验证规则,可以直接在 rule 中使用:
- require:字段必填
- number 或 integer:必须为数字或整数
- float:必须为浮点数
- email:邮箱格式
- url:URL 格式
- mobile:手机号格式
- alpha:只能为字母
- alphaNum:字母和数字
- alphaDash:字母、数字、下划线和破折号
- chs:只能为汉字
- chsAlpha:汉字、字母
- chsAlphaNum:汉字、字母、数字
- length:5:长度为5
- length:5,20:长度在5到20之间
- between:1,100:数值范围在1到100之间
- in:1,2,3:值必须在指定集合中
- regex:正则表达式:自定义正则匹配
场景化验证设置
同一个字段在不同操作中可能需要不同的验证规则,比如“添加用户”和“编辑用户”时对密码的处理。这时可以使用 scene 方法定义验证场景。
PictoGraphic
AI驱动的矢量插图库和插图生成平台
133
查看详情
protected $scene = [
'add' => ['name', 'email', 'password'],
'edit' => ['name', 'email'],
];
在控制器中调用指定场景:
$validate = new \app\validate\UserValidate();
if (!$validate->scene('add')->check($data)) {
return $validate->getError();
}
控制器中使用验证器实战
下面是一个典型的控制器方法,演示如何使用验证器进行数据校验:
namespace app\controller;
use app\validate\UserValidate;
use think\facade\Request;
class UserController
{
public function create()
{
$data = Request::post();
$validate = new UserValidate();
if (!$validate->check($data)) {
return json(['code' => 400, 'msg' => $validate->getError()]);
}
// 验证通过,继续业务逻辑
return json(['code' => 200, 'msg' => '数据合法']);
}
}
如果需要更灵活的临时规则验证,也可以不用定义验证器类,直接使用:
$validate = new \think\Validate([
'name' => 'require|max:25',
'email' => 'require|email'
]);
if (!$validate->check($data)) {
return $validate->getError();
}
基本上就这些。ThinkPHP 验证器机制清晰、功能强大,合理使用可以大幅提升开发效率和数据安全性。掌握规则定义与场景控制,就能应对大多数业务校验需求。
以上就是ThinkPHP验证器怎么编写_ThinkPHP验证器规则定义及数据校验实战的详细内容,更多请关注php中文网其它相关文章!
# 提示信息
# 最具价值的网站建设
# 盐城营销型网站建设方法
# seo学习班哪家好
# 松原微营销推广招聘
# 清水河网站推广优化
# 医疗网站建设大全图
# 南雄网站建设推广厂家
# 许昌优惠网站建设价格
# 开封智能营销推广
# 学校落地推广营销方案
# 最多
# 就能
# 能为
# 自定义
# php
# 键名
# 器中
# 是一个
# 组中
# 邮箱
# ai
# 工具
# app
# cad
# 正则表达式
# json
# js
# word
# thinkphp
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
J*aScript中针对特定容器内图片动画的实现教程
Golang并发任务中错误如何聚合_Golang goroutine error收集方式
在Blazor WebAssembly应用中动态注入客户端特定指标代码的策略
在VS Code中配置和运行Dart程序的完整步骤
Golang如何使用const iota_Go iota常量计数器讲解
向日葵客户端怎么进行远程CentOS控制_向日葵客户端远程CentOS控制操作教程
J*aScript井字棋(Tic-Tac-Toe)核心交互逻辑实现教程
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
J*aScript:在map操作中高效处理空数组
Django通过AJAX异步上传图片并保存至模型的完整指南
解决 Vaadin 8 中大文件音频播放与定位时出现的 IOException
vivo云服务网页版登录 怎么登录vivo云服务网页版
word中如何让数字纵向排列_Word数字纵向排列方法
抖音网页版快捷访问 抖音网页版网页版入口操作教程
自定义Bag-of-Words实现:处理带负号的词汇权重
CSS自定义字体样式被系统字体替换怎么办_font-face方式指定font-display控制渲染策略
深入理解Promise链:如何在catch后中断then的执行
Windows10怎么开启夜间模式 Windows10系统设置调整色温与亮度缓解夜间用眼疲劳【教程】
处理动态列数据:J*a ArrayList的正确初始化与字符累加教程
微博网页版首页入口 微博电脑端官网登录链接
word邮件合并后日期格式不对怎么改_Word邮件合并日期格式修改方法
百度浏览器字体显示异常偏小_百度浏览器字体渲染修复方案
三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】
Win11怎么设置鼠标指针速度_Win11提高鼠标指针精确度选项
Win10如何清理注册表垃圾 Win10注册表维护与优化指南【慎用】
Composer的 archive 命令怎么用_快速打包你的PHP项目及其Composer依赖
j*a toString()的覆盖
c++如何实现单例设计模式_c++线程安全的单例模式写法
b站怎么删除评论_b站评论管理与删除操作
Win11文件资源管理器卡顿怎么修 Win11重置资源管理器进程优化响应速度【修复方法】
4399体育竞技小游戏_4399小游戏赛事入口
age动漫网站入口 age动漫官网直接访问入口
在Runstone环境中高效处理TasteDive API的JSON数据
Win11蓝牙耳机断连怎么解决 Win11蓝牙设置重新配对与驱动更新【技巧】
台积电1.4nm工艺A14瞄准2028:10年来性能提升80%
双系统安装时,如何设置默认启动系统? msconfig命令了解一下!
CSS实现侧边栏导航项全宽圆角悬停背景效果
漫蛙漫画官方首页 漫蛙2漫画在线阅读入口
CSS如何设置hover状态颜色_hover伪类调整背景或文字颜色
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
一加 14R 快充无反应_一加 14R 充电优化
windows10怎么关闭系统提示音_windows10彻底静音设置方法
Lar*el Excel导入时生成自定义递增ID的策略与实践
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
12306选座怎么选到临时改签座_12306改签选座策略与步骤
C++如何实现异步操作_C++11使用std::future和std::async进行异步编程
Composer的 "conflict" 字段有什么用_如何声明不兼容的包以避免依赖冲突
葱吃多了会怎样 葱吃多了会伤胃吗
俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航
Lar*el Form Request中唯一性验证在更新操作中的正确实现


2025-11-22
浏览次数:次
返回列表