//array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
protected $_validate = array( );

ThinkPHP 自动验证定义的附加规则如下:

  1. regex:使用正则进行验证(默认)
  2. unique:验证唯一性
  3. confirm:验证表单中的两个字段是否相同
  4. equal:验证是否等于某个值
  5. in:验证是否在某个范围内
  6. function:使用函数验证
  7. callback:使用方法验证

自动验证例子

各种自动验证参考例子如下:

// 默认情况下用正则进行验证
array('title','require','标题不能为空。'),
array('order','number','排序必须是数字。',2),
array('email','email','邮箱格式不符合要求。'),
array('qq','qq','QQ号码不正确。'), // 在新增的时候验证标题title字段是否唯一
array('title','','标题已经存在!',0,'unique',1), // 验证确认密码是否和密码一致
array('repassword','password','确认密码不正确。',0,'confirm'), // 验证class填写的值为 一班
array('class','一班','班级必须填写一班。',0,'equal'), // 当值不为空的时候判断是否在一个范围内
array('value',array(1,2,3),'值的范围不正确。',2,'in'), // 自定义函数验证用户名格式
array('username','checkName','用户名格式不正确。',0,'function'), // 在注册或更改资料是调用 checkEmail 方法检查邮箱
array('email','checkEmail',1,'callback'),

使用正则表达式(regex)验证

上述几类附加规则中,使用正则表达式是经常使用的,也是系统默认的验证附加规则。系统内置了如下正则检测规则:

require(必须)、email(邮箱格式)、url(URL地址)、currency(货币)、number(数字)、qq(QQ号码)、english(英文字符)。

这些附加规则可以直接使用,如果这些附加规则无法满足要求,可以使用自定义的正则规则:

该规则要求用户名只能为英文字符及下划线和数字组成,且长度为3-15个字节。

要了解更多的正则表达式规则参见《PHP 常用正则表达式整理》。

使用自定义函数(function)验证

使用自定义函数验证附加规则,函数可以是 Common/common.php 里的自定义函数,也可以是 PHP 的内置函数:

class UserModel extends Model{
protected $_validate = array(
array('username','checkName','用户名不符合要求。',0,'function'),
};
}

自定义 checkName 函数:

function checkName($username){
if(!preg_match('/^{3,15}$/', $username)){
return false;
}else{
return true;
}
}

提示:对于用户名的规则可以直接使用正则验证而无需函数,在此只是为了演示自定义函数的验证的用法而已。

使用方法(callback)验证

ThinkPHP 自动验证还支持调用当前 Model 类的一个方法来进行验证。

class UserModel extends Model{
protected $_validate = array(
array('email','checkEmail','邮箱已经存在。',1,'callback'),
}; // checkEmail方法
protected function checkEmail(){
$User=new Model('User');
// 新用户注册,验证唯一
if(empty($_POST<'uid'>)){
if($user->getByEmail($_POST<'email'>)){
return false;
}else{
return true;
}
}else{
// 更改资料判断邮箱与其他人的邮箱是否相同
if($user->where("uid!={$_POST<'uid'>} and email='{$_POST<'email'>}'")->find()){
return false;
}else{
return true;
}
}
}
}

当 checkEmail 方法返回 false 时,验证就不通过。

可见 ThinkPHP 自动验证功能十分强大,能满足对表单的各种验证要求。

最新文章

  1. mako模板调试与使用技巧
  2. JAVA动态代理模式(从现实生活角度理解代码原理)
  3. OPTIMIZE TABLE 小解
  4. 使用NHibernate(3)-- 用代码代替配置文件
  5. 1140 Jam的计数法
  6. U3D assetbundle打包
  7. fork和execve
  8. cookies的理解
  9. Effective C++ Item 37 绝不又一次定义继承而来的缺省參数值
  10. 关于ER图和UML图之间的对比
  11. bzoj2007
  12. 读书笔记_Effective_C++_条款二十二:将成员变量声明为private
  13. VS2010下创建的VB.NET项目打包发布安装包的流程
  14. Centos下mongodb的安装与配置
  15. java工具类(三)之生成若干位随机数
  16. Django之AppConfig源码学习
  17. [Python Web]部署完网站需要做的基本后续工作
  18. 数据库事务的四大特性以及事务的隔离级别-与-Spring事务传播机制&amp;隔离级别
  19. yum仓库搭建
  20. SpringCloud无废话入门04:Hystrix熔断器及监控

热门文章

  1. BackTrack 5 R3 Metasploit更新方法及msfupdae,msconsole出错解决办法
  2. aapt: error while loading shared libraries: libstdc++.so.6: wrong ELF class: ELFCLASS64
  3. HDU 1882 Strange Billboard(状态压缩+转置优化)
  4. smarty的ASSIGN()函数
  5. CSS中绝对定位依据谁进行定位?
  6. oracle监听无法启动
  7. CMU机器学习课程-简介
  8. Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeExcep
  9. eazasyui树形菜单
  10. (简单) POJ 3264 Balanced Lineup,RMQ。