博客列表 >验证器的几种用法--5.25作业

验证器的几种用法--5.25作业

弓长木子的博客
弓长木子的博客原创
2018年05月26日 13:34:07857浏览

实例

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

声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议