实例
<?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()方法输出结果