在common 中写入你的自定义函数
function chickCount($a,$b=6,$c=12)
{
$countA = strlen($a);
if($countA >= $b and $countA <= $c )
{
return true ;
}else
{
return false ;
}
}
然后在model
protected $_validate = array(
array('name','require','帐号不能为空!!!'), //require 是检查是否为空
array('name','chickCount','帐号要在6-12位之间!!!',1,'function'), //require 是检查是否为空
//array('name','/^[a-z]\w{3,}$/i','帐号格式错误!!!'), //检查帐号是否符合格式
array('password','require','密码必须写!!!'), //密码是否为空
array('repassword','require','请确认密码!!!'), //重复密码是否为空
array('repassword','password','两次密码不同!!!',1,'confirm'), //比较密码
array('account','','用户名已存在!!!',0,'unique',self::MODEL_BOTH), //检查帐号是否已经存在
array('email','require','邮箱不能为空!!!'), //require 是检查是否为空
array('phone','number','电话必须是数字!!!') //require 是检查是否为空
);
Model::EXISTS_TO_VAILIDATE或者0意思是存在字段就验证(这是默认的)
Model::MUST_TO_VALIDATE或者1必须验证的意思
Model::VALUE_TO_VAILIDATE或者2值不为空的时候验证
附加规则:配合验证规则使用(可选的)包括下面的东西
Regex使用与此同时进行验证,
Function使用函数验证
Callback使用方法验证就是当前Model类的一个方法
Confirm验证表单中的两个字段是否相同.
Equal验证是否等于某个值,
In验证是否在某个范围内,前面定义的验证规则必须是一个数组
Unique验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同值
系统内置一些常用与此同时验证的规则,可以直接使用,其中包括
Require字段必须
Email邮箱
url URL地址
currency货币
number数字
zip邮编
integer整数
double
English英文
这些验证规则可以直接使用
在ThinkPHP中,内置了数据对象的自动验证和自动完成功能来完成模型的业务规则验证,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性。
$_validate属性的验证因子格式:
array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
*验证字段:表单字段名称,注:这个字段不一定是数据库字段,也可以是表单的一些辅助字段--比如确认密码和验证码等等。
*验证规则: 要进行验证的规则,有时需要结合附加规则。
内置验证规则--包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字,这些验证规则可以直接使用。注:如有其它验证规则则需自己编写方法
*提示信息: 用于验证失败后的提示信息。
验证条件:
0 或者 Model::EXISTS_TO_VAILIDATE--存在字段就验证 (默认)
1 或者 Model::MUST_TO_VALIDATE--必须验证
2 或者 Model::VALUE_TO_VAILIDATE--值不为空的时候验证
附加规则: 配合验证规则使用
regex 使用正则进行验证,表示前面定义的验证规则是一个正则表达式(默认)
function 使用函数验证,前面定义的验证规则是一个函数名 注:系统函数或自定义函数
callback 使用方法验证,前面定义的验证规则是当前Model类的一个方法 注:自定义方法
confirm 验证表单中的两个字段是否相同,前面定义的验证规则是一个字段名
equal 验证是否等于某个值,该值由前面的验证规则定义
in 验证是否在某个范围内 注:前面定义的验证规则必须是一个数组
unique 验证是否唯一,系统会根据字段目前的值查询数据库来判断是否存在相同的值 注:会请求数据库
验证时间:
1 或者 Model:: MODEL_INSERT--新增数据时候验证
2 或者 Model:: MODEL_UPDATE--编辑数据时候验证
3 或者 Model:: MODEL_BOTH--全部情况下验证(默认)
熟悉了$_validate属性后,就要用实例来分析在验证某些数据的时候该怎么样编写验证因子。
如果学习过ThinkPHP的同学们应该在手册中看到过一些关于自动验证的例子,在这里我们将把大多数常用的例子都总结在这里,方便大家来学习和使用,如果有一些同学们常用但是这里没有提到的大家可以集思广益,来完善所有的自动验证数据的方法,这里将不断更新。
实例:
protected $_validate = array(
array('username','require','用户名必须!'), // 数据是否为空 注:默认增加修改都验证
array('username','','用户名已经存在!',0,’unique’,1), // 在新增的时候验证username字段是否唯一
array('password','checkPwd','密码格式不正确',0,’function’), // 密码格式可以用chenkPwd方法自定义
array('repassword','password','确认密码不正确',0,’confirm’), // 验证确认密码是否和密码一致
array('sex','array(0,1,2)','性别必须为0,1,2',0,'in'), // 验证数据是否在一个范围内
array('age','number','年龄必须为数字'), // 验证数据是否为数字
array('email','email','邮箱格式不正确'), // 内置正则验证邮箱
array('email','/^/w+([-+.]/w+)*@/w+([-.]/w+)*/./w+([-.]/w+)*$/','邮箱格式不正确), // 自定义正则验证数据
array('mypage','url','个人网址格式不正确'), // 内置正则验证URL地址
array('verify','****','验证码不正确',0,'equal'), // 验证数据是否等于某个值 注:****可以是随机验证码
array('salary','currency','薪水验证不正确','0'), // 内置验证货币数据
);