## 自动验证 Validate组件提供了方便的验证机制,快速实现验证业务。 其他产品也可以使用该组件,请登录 [GITHUB](https://github.com/houdunwang/validate) 查看源代码与说明文档。 [TOC] ## 配置 验证响应由配置文件 system/config/validate.php 中的app 配置段决定。 #### redirect 直接跳转,会分配变量$errors到前台,开发者可以通过模板标签读取错误内容。 #### show 直接显示错误信息,不需要开发者处理 #### default 由开发者自行处理,需要使用 Validate::fail()自行进行判断。 ## 基本使用 #### 基本语法 ``` array(字段名,验证方法,错误信息,验证条件) 验证条件 (可选): 1 有字段时 2 值不为空时 3 必须处理 (默认) 4 值为空时 5 不存在字段时处理 ``` #### 验证数据 默认情况下验证直接操作POST数据,我们可以在执行make()方法时传递第二个参数设置验证数据。 ``` $data = ['phone'=>'333']; $res = Validate::make( [ [ 'phone', 'phone', '手机号格式错误', Validate::MUST_VALIDATE ] ] ,$data); if($res===false){ print_r(Validate::getError()); } ``` #### 闭包验证 ``` $data = ['num' => 300]; Validate::make([ ['domain', function ($value) { return $value > 100; }, '域名不能为空',Validate::MUST_VALIDATE ] ],$data); //闭包返回 true 时验证通过 ``` #### 验证表字段唯一性 ``` $data = ['qq' => '2300071698','id'=>1]; Validate::make( [ [ 'qq', 'unique:user,id', 'qq已经存在', Validate::MUST_VALIDATE ] // user :表名 uid:表主键 ],$data ); ``` #### 验证表单验证码 ``` Validate::make( [ [ 'code', 'captcha', '验证码输入错误', Validate::MUST_VALIDATE ] ] ); ``` ## 验证判断 需要响应方式为default值时有效。 ``` if(Validate::fail()){ echo '验证失败'; }; ``` ## 获取错误信息 错误信息会记录到模型对象的 error 属性中,使用 getError() 方法获取但需要设置处理方式为 default ``` Validate::getError(); ``` ## 系统规则 ``` required 必须输入 isnull 字段为空时验证失败 email 邮箱 http 网址 tel 固定电话 phone 手机 zipCode 邮政编码 num 数字范围 如:num:20,60 range 长度范围(位数)如 : range:5,20 maxlen 最大长度如:maxlen:10 minlen 最少长度如:minlen:10 regexp 正则如:regexp:/^\d{5,20}$/ confirm 两个字段值比对如:confirm:password2 china 内容为中文或字母时验证通过 identity 身份证 unique 数据表值唯一如:unique:news,id (id为表主键) exists 存在这个字段时验证失败 captcha 验证码 ``` ## 增加规则 ``` Validate::extend('checkUser',function($field,$value,$params){ //返回值为true时验证通过 return true; }); ``` 第一个参数为验证规则名称,第二参数闭包函数。 ## 显示错误 #### redirect 模式 当配置项的错误处理设置为 redirect 时,系统会员向模板中分配包含错误信息的变量 $errors,所以可以要模板中使用以下方式显示错误。 ``` <if !empty($errors)> <if value="$errors"> <foreach from="$errors" value="$e"> <li>{{$e}}</li> </foreach> </if> ``` #### show 模式 当配置项的错误处理设置为 show 时,系统将使用 config/validate.php 配置文件中的 template 配置项指定的模板显示错误。