登录  /  注册
博主信息
博文 25
粉丝 1
评论 0
访问量 24653
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
thinkPHP的独立验证与验证器类--20190325
曲小冷
原创
1418人浏览过

thinkPHP中可用两种方式验证数据:

1、验证器:类 基于系统的验证器类,用户包装后自定义的验证器类

2、独立验证:直接调用框架内置的验证类:think\Validate

___________________________________________________________________________________________________

第一种:验证器类

人为的约定是一个用户自定义验证器类并继承Validate,用来对数据表中的字段进行验证

1、创建验证器类 

check($data , $rules = [], $scene = '') 

// 1、给数据表中的字段帮规定验证规则
protected $rule =   [
    'name'  => 'require|chsAlpha|max:25',
    'sex'   => 'require|number|in:0,1',
    ...
];
// 2、验证提示信息
protected $message  =   [
    'name.require' => '名称必须',
    'name.chsAlpha' => '名称只能是汉字、字母',
    'name.max'     => '名称最多不能超过25个字符',
    'sex.require' => '性别必须',
    'sex.number' => '性别必须是数字',
    'sex.in' => '性别只能是1或0',
    ...
];

2、使用定义的验证类

先引入
use app\index\validate\Staff as staffValidate;
在类中验证数据
public function vali(){
    $data = [    // 模拟数据
        'name'=>'灰灰',
        'sex'=>1
    ];
    $validate = new staffValidate;    // 实例化验证器类
    $res = $validate->check($data);
    if (false === $res){
        halt($validate->getError());  // $validate->getError() 如果验证错误显示验证器类中对应的验证提示信息
    }
    dump('验证通过');
}

——————————————————————————————————————————————————

第二种:独立验证  

分两种:

1. 独立验证:直接调用框架内置的验证类:think\Validate

需要创建验证器类对象 

Validate::make($rule [,$message]) 提示信息可选

public function vali2(){
    $rule =   [
        'name'  => 'require|chsAlpha|max:25',
        'sex'   => 'require|number|in:0,1'
    ];
    $message  =   [
        'name.require' => '名称必须',
        'name.chsAlpha' => '名称只能是汉字、字母',
        'name.max'     => '名称最多不能超过25个字符',
        'sex.require' => '性别必须',
        'sex.number' => '性别必须是数字',
        'sex.in' => '性别只能是1或0'
    ];
    $validate = Validate::make($rule,$message);    
    $data = [    
        'name'=>'小飞鼠',
        'sex'=>1,
        'age'=>22,
        'email'=>'admin@php.cn'
    ];
    $res = $validate->check($data);
    if (false === $res){
        halt($validate->getError());
    }
    dump('验证通过');
}

2. 独立验证:使用验证过对象链式调用

public function vali3(){
    $validate = new Validate();    
    // 链式调用
    $res = $validate->rule([
            'name'  => 'require|chsAlpha|max:25',
            'sex'   => 'require|number|in:0,1',
            'age'   => 'require|number|between
        ])
        ->message([
            'name.require' => '名称必须',
            'name.chsAlpha' => '名称只能是汉字、字母',
            'name.max'     => '名称最多不能超过25个字符',
            'sex.require' => '性别必须',
            'sex.number' => '性别必须是数字',
            'sex.in' => '性别只能是1或0'
        ])
        ->check($data);
    if (false === $res){
        halt($validate->getError());
    }
    dump('验证通过');
}

如果不加验证消息则会显示默认的提示

0.png1.png

批改状态:未批改

老师批语:
本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!
全部评论 文明上网理性发言,请遵守新闻评论服务协议
0条评论
作者最新博文
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

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

  • 登录PHP中文网,和优秀的人一起学习!
    全站2000+教程免费学