The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
自动验证

DyhbFrame系统还内置了数据对象的自动验证功能来完成模型的业务规则验证,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_check属性,是由多个验证因子组成的数组,支持的验证因子格式:

验证字段=>array(验证规则,错误提示,验证条件,附加规则,验证时间) 


验证字段:需要验证的表单字段名称,这个字段不一定是数据库字段,也可以是表单的一些辅助字段,例如确认密码和验证码等等。(必须)

验证规则: 要进行验证的规则,需要结合附加规则(必须)

提示信息: 用于验证失败后的提示信息定义(必须)

验证条件:(可选)

0 存在字段就验证 (默认)  

1 必须验证   

2 值不为空的时候验证  

 

附加规则: 配合验证规则使用(可选),包括:

 regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)

 function 使用函数验证,前面定义的验证规则是一个函数名

 callback 使用方法验证,前面定义的验证规则是当前Model类的一个方法

 confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名

 equal 验证是否等于某个值,该值由前面的验证规则定义

 in 验证是否在某个范围内,前面定义的验证规则必须是一个数组

 unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值

系统还内置了一些常用正则验证的规则,可以直接使用,包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字,这些验证规则可以直接使用。

验证时间:(可选)

ADD 新增数据时候验证  

UPD 编辑数据时候验证  

ALL 全部情况下验证(默认)  

示例:

protected $_check         =         array(  

'verify'=>array('require','验证码必须!'), //默认情况下用正则进行验证  

'name'=>array('','帐号名称已经存在!',0,’unique’,1), // 在新增的时候验证name字段是否唯一  

'value'=>array(,array(1,2,3),'值的范围不正确!',2,’in’), // 当值不为空的时候判断是否在一个范围内  

'repassword'=>array('password','确认密码不正确',0,’confirm’), // 验证确认密码是否和密码一致  

'password'=>array('checkPwd','密码格式不正确',0,’function’), // 自定义函数验证密码格式  

);  

通常来说,每个数据表对应的验证规则是相对固定的,但是有些特殊的情况下面可能会改变验证规则,我们可以动态的改变验证规则来满足不同条件下面的验证:

$User = D("user"); // 实例化User对象  

$validate    =    array(  

'verify'=>array('require','验证码必须!'), // 仅仅需要进行验证码的验证  

);  

$User-> __set("_check",$_check);  

$result = $User->add(); 

if(!result)
   exit("属性设置失败!");