博客列表 >thinkPHP的独立验证与验证器类--20190325

thinkPHP的独立验证与验证器类--20190325

曲小冷
曲小冷原创
2019年03月28日 14:32:381474浏览

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 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议