//array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),
protected $_validate = array( );php
ThinkPHP 自动验证定义的附加规则以下:html
各类自动验证参考例子以下:正则表达式
// 默认状况下用正则进行验证 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'),
上述几类附加规则中,使用正则表达式是常用的,也是系统默认的验证附加规则。系统内置了以下正则检测规则:express
require(必须)、email(邮箱格式)、url(URL地址)、currency(货币)、number(数字)、qq(QQ号码)、english(英文字符)。ide
这些附加规则能够直接使用,若是这些附加规则没法知足要求,能够使用自定义的正则规则:函数
该规则要求用户名只能为英文字符及下划线和数字组成,且长度为3-15个字节。ui
要了解更多的正则表达式规则参见《PHP 经常使用正则表达式整理》。url
使用自定义函数验证附加规则,函数能够是 Common/common.php 里的自定义函数,也能够是 PHP 的内置函数:spa
class UserModel extends Model{ protected $_validate = array( array('username','checkName','用户名不符合要求。',0,'function'), }; }
自定义 checkName 函数:code
function checkName($username){ if(!preg_match('/^{3,15}$/', $username)){ return false; }else{ return true; } }
提示:对于用户名的规则能够直接使用正则验证而无需函数,在此只是为了演示自定义函数的验证的用法而已。
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 自动验证功能十分强大,能知足对表单的各类验证要求。