Blogger Information
Blog 7
fans 0
comment 0
visits 5059
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
验证器的几种用法--5.25作业
弓长木子的博客
Original
858 people have browsed it

实例

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

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