批改状态:未批改
老师批语:
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('验证通过');
}如果不加验证消息则会显示默认的提示


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