批改状态:未批改
老师批语:
<?php
namespace app\index\controller;
use think\Controller;
use app\validate\Staff;//引入自定义的验证器类文件
use think\Validate;//引入模板定义的验证器类文件
class Verify extends Controller{
//定义需要的数据
protected static $data = [
'name' => 'zyx',
'age' => 29,
'sex' => 0,
'salary' => 1300
];
//自定义控制器的常规用法:自定义验证器类中定义规则和错误信息,在控制器文件中实例化验证器,再调用check方法
public function v1(){
//实例化自定义的验证器类
$validate = new Staff();
//调用模板定义的check方法
$res = $validate -> check(self::$data);
//返回验证信息
if(!$res){
dump($validate->getError());
}else{
echo '验证通过';
}
}
//自定义控制器的使用方法2:使用模板定义的验证方法validate,验证条件和错误信息引用自定义验证器类中内容
public function v2(){
//引用自定义控制器类中的规则和错误信息
$rule = 'app\validate\Staff';
$message = 'app\validate\Staff';
//调用模板定义的validate方法
$res = $this->validate(self::$data,$rule,$message);
//var_dump($res);die;//验证通过返回true
//返回验证信息
if(true !== $res){
echo $res;
}else{
echo '验证通过';
}
}
//自定义验证器的使用方法3:直接在控制器中定义规则和错误信息,然后使用模板定义的验证方法validate,实现绕过验证器的功能
public function v3(){
//验证规则
$rule = [
'name' => 'require|length:5,10',
'sex' => 'in:0,1',
'age' => 'require|between:18,60',
'salary' => 'require|gt:2000'
];
//错误信息
$message = [
'name.require' => '姓名不能为空',
'name.length' => '姓名长度必须在5-10个字符之间',
'sex.in' => '性别不能为空',
'age.require' => '年龄不能为空',
'age.between' => '年龄必须在18-60之间',
'salary.require' => '工资不能为空',
'salary.gt' => '工资必须大于2000'
];
//调用模板定义的validate方法
$res = $this->validate(self::$data,$rule,$message);
//返回验证信息
if(true !== $res){
echo $res;
}else{
echo '验证通过';
}
}
//独立验证:直接实例化模板验证类think\Validate.php文件,规则、错误信息在控制器中定义
public function v4(){
//验证规则
$rule = [
'name' => 'require|length:5,10',
'sex' => 'in:0,1',
'age' => 'require|between:18,60',
'salary' => 'require|gt:2000'
];
//错误信息
$message = [
'name.require' => '姓名不能为空',
'name.length' => '姓名长度必须在5-10个字符之间',
'sex.in' => '性别不能为空',
'age.require' => '年龄不能为空',
'age.between' => '年龄必须在18-60之间',
'salary.require' => '工资不能为空',
'salary.gt' => '工资必须大于2000'
];
//创建验证
$validate = Validate::make($rule,$message);
//开始验证
$res = $validate->check(self::$data);
//返回验证信息
if(!$res){
dump($validate->getError());
}else{
echo '验证通过';
}
}
}点击 "运行实例" 按钮查看在线实例
总结:验证器主要有两种类型-自定义验证器类和独立验证
自定义验证器类有三种用法:
1.在控制器类中实例化自定义验证器类,然后调用模板的check方法验证和getError方法输出错误信息;
2.在控制器中引入验证器类中的规则和错误信息,调用模板的验证方法validate验证并输出结果;
3.在控制器中直接定义规则和错误信息,调用模板验证方法validate验证并输出,从而绕过验证器类
独立验证:在控制器中定义规则和方法,直接实例化模板验证类文件think\Validate.php,validate::make()及check()方法验证,getError()方法输出结果
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号