PHP开发笔记's Archiver

fangzhen 发表于 2008-10-23 11:31

ThinkPHP数据验证

系统内置了数据对象的自动验证功能, 而大多数情况下面, 数据对象是由表单提交的$_POST 数据创建。
需要使用系统的自动验证功能,只需要在 Model类里面定义$ _validate 属性,是由多个验证因子组成
的数组,支持的验证因子格式:
array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
验证字段就是定义需要验证的表单字段,这个字段不一定是数据库字段,也可以是表单的一些辅助字
段,例如确认密码和验证码等等。
验证规则 要进行验证的规则,需要结合附加规则
提示信息 用于验证失败后的提示信息定义
验证因子中上面三个参数必须定义,下面为可选参数。
EXISTS_TO_VAILIDATE 或者 0 存在字段就验证 (默认)
MUST_TO_VALIDATE 或者 1 必须验证
VALUE_TO_VAILIDATE 或者 2 值不为空的时候验证
附加规则 配合验证规则使用,包括:
function 使用函数验证,前面定义的验证规则是一个函数名
callback 使用方法验证,前面定义的验证规则是一个当前 Model类的方法
confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名
equal 验证是否等于某个值,该值由前面的验证规则定义
in 验证是否在某个范围内,前面定义的验证规则必须是一个数组
unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值
regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)
如果采用正则进行验证,会调用系统内置的验证类进行验证操作,该验证类位于 ORG.Text.Validation,
通过正则的方式对数据进行验证,并定义了一些常用的验证规则。包括:
require字段必须
email邮箱
urlURL 地址
currency货币
number数字
这些验证规则可以直接使用。
验证时间:
all 全部情况下验证(默认)
add 新增数据时候验证
edit 编辑数据时候验证
示例:
var $_validate = array(
array('verify','require','验证码必须!'), //所有情况下用正则进行验证
array(name,'','帐号名称已经存在!',0,’unique’,’add’), // 在新增的时候验证 name 字段是否唯一
array('value',array(1,2,3),'值的范围不正确!',2,’in’), // 当值不为空的时候判断是否在一个范围内
array('repassword','password','确认密码不正确',0,’confirm’), // 验证确认密码是否和密码一致
array('password','checkPwd','密码格式不正确',0,’function’), // 自定义函数验证密码格式
);
当使用系统的 create 方法创建数据对象的时候会自动进行数据验证操作,代码示例:
$User = D(“User”);
$vo = $User->create();
if (!$vo){
// 如果创建失败 表示验证没有通过 输出错误提示信息
$this->error($User->getError());
}

页: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.