Blogger Information
Blog 25
fans 1
comment 0
visits 25223
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
thinkPHP的独立验证与验证器类--20190325
曲小冷
Original
1459 people have browsed it

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

Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post