博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
TP5验证规则使用
阅读量:4556 次
发布时间:2019-06-08

本文共 1663 字,大约阅读时间需要 5 分钟。

定义验证器类:

namespace app\index\validate;use think\Validate; class User extends Validate { protected $rule = [ 'name' => 'require|max:25', 'email' => 'email', ]; protected $message = [ 'name.require' => '用户名必须', 'email' => '邮箱格式错误', ]; protected $scene = [ 'add' => ['name','email'], 'edit' => ['email'], ]; }
 

①静态调用(使用内置的规则验证单个数据,返回值为布尔值

// 日期格式验证Validate::dateFormat('2016-03-09','Y-m-d'); // true // 验证是否有效的日期 Validate::is('2016-06-03','date'); // true // 验证是否有效邮箱地址 Validate::is('thinkphp@qq.com','email'); // true // 验证是否在某个范围 Validate::in('a',['a','b','c']); // true // 验证是否大于某个值 Validate::gt(10,8); // true // 正则验证 Validate::regex(100,'\d+'); // true

②模型验证(在模型中的验证方式

$User = new User;$result = $User->validate(    [        'name' => 'require|max:25', 'email' => 'email', ], [ 'name.require' => '名称必须', 'name.max' => '名称最多不能超过25个字符', 'email' => '邮箱格式错误', ] )->save($data); if(false === $result){ // 验证失败 输出错误信息 dump($User->getError()); }

③控制器验证(控制器中进行验证

如果你需要在控制器中进行验证,并且继承了\think\Controller的话,可以调用控制器类提供的validate方法进行验证,如下:

$result = $this->validate(    [        'name'  => 'thinkphp',        'email' => 'thinkphp@qq.com', ], [ 'name' => 'require|max:25', 'email' => 'email', ]); if(true !== $result){ // 验证失败 输出错误信息 dump($result); }

控制器中的验证代码可以简化为:

$result = $this->validate($data,'User');if(true !== $result){ // 验证失败 输出错误信息 dump($result); }

如果要使用场景,可以使用:

$result = $this->validate($data,'User.edit');if(true !== $result){ // 验证失败 输出错误信息 dump($result); }

在validate方法中还支持做一些前置的操作回调,使用方式如下:

$result = $this->validate($data,'User.edit',[],[$this,'some']); if(true !== $result){ // 验证失败 输出错误信息 dump($result); }

 

 

转载于:https://www.cnblogs.com/wupeiky/p/5846659.html

你可能感兴趣的文章
HTML DOM addEventListener() 方法
查看>>
仿照APP直播点赞
查看>>
[百度校招]打印全排列
查看>>
Java 第四天 Mysql
查看>>
SQL去重复记录,留一条符合条件记录
查看>>
ELMAH (ASP.NET错误日志处理)使用方法
查看>>
目录操作-SYSTEM.IO
查看>>
HDU 1005题解,这种题目关键在于寻找循环节,这很重要1,很容易找到循环环节是49,AC就是理所当然...
查看>>
结对第二次—文献摘要热词统计及进阶需求
查看>>
73. Set Matrix Zeroes 把矩阵同一行列的元素都改成0
查看>>
Design Pattern --- Composite
查看>>
我从没理解js的闭包,直到他人向我这么解释。。。
查看>>
移动开发之css3实现背景几种渐变效果
查看>>
前端切图:自制简易音乐播放器
查看>>
Nescafé2 月之谜 题解
查看>>
用git revert 撤消merge操作
查看>>
Sql server 数据库默认路径
查看>>
5. 监视和ZooKeeper操作
查看>>
hbase读写流程
查看>>
Android自定义控件:动画类---插值器Interpolator
查看>>