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("属性设置失败!");
