是使用过程中,碰到的问题,以及总结
~~~
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $_validate = array(
array('verify','require','验证码必须!'),
);
}
~~~
说明:
`array('verify','require','验证码必须!'),`
//默认情况下用正则进行验证,其实本身是,后面3个都是默认值
`array('verify','require','验证码必须!',0, 'regex', 3),`
1. verify:需要验证的表单字段名称,这个字段不一定是数据库字段
2. require: 验证规则(要进行验证的规则,需要结合附加规则,如果在使用正则验证的附加规则情况下,系统还内置了一些常用正则验证的规则,可以直接作为验证规则使用,包括:require 字段必须、email 邮箱、url URL地址、currency 货币、number 数字。)
3. 验证码必须!:用于验证失败后的提示信息定义
4. 0:默认0
包含下面几种情况:
self::EXISTS_VALIDATE 或者0 存在字段就验证(默认)
self::MUST_VALIDATE 或者1 必须验证
self::VALUE_VALIDATE或者2 值不为空的时候验证
5. regex:附加规则 (具体看自动验证,以及后面事例)
6. 3:默认3(验证时间)
包含下面几种情况:
self::MODEL_INSERT或者1新增数据时候验证
self::MODEL_UPDATE或者2编辑数据时候验证
self::MODEL_BOTH或者3全部情况下验证(默认)
理解:就是在什么情况下验证数据,是新增语句,还是编辑语句,
这里的验证时间需要注意,并非只有这三种情况,你可以根据业务需要增加其他的验证时间。
例如:
~~~
namespace Home\Model;
use Think\Model;
class UserModel extends Model{
protected $_validate = array(
array('verify','require','验证码必须!'), // 都有时间都验证
array('name','checkName','帐号错误!',1,'function',4), // 只在登录时候验证
array('password','checkPwd','密码错误!',1,'function',4), // 只在登录时候验证
);
}
~~~
那么,我们就可以在登录的时候使用
~~~
$User = D("User"); // 实例化User对象
if (!$User->create($_POST,4)){ // 登录验证数据
// 验证没有通过 输出错误提示信息
exit($User->getError());
}else{
// 验证通过 执行登录操作
}
~~~
$User->create($_POST,4)创建数据的时候可以指定类型,需要实例化数据库,D方法
使用过的自动验证
~~~
protected $_validate = array(
//array(验证字段,验证规则,错误提示,验证条件,附加规则,验证时间)
//验证用户名不能为空,在新增的时候
array('user_login', 'require', '用户名称不能为空!', 1, 'regex', Model:: MODEL_INSERT),
//验证用户名不能为空,在更新的时候
array('user_login', 'require', '用户名称不能为空!', 1, 'regex', Model:: MODEL_UPDATE),
//验证密码的位数,在更新和添加的时候
array('user_pass', '3,12', '密码必须为6到12位', 1, 'length', 3),
// 验证user_login字段是否唯一
array('user_login', '', '用户名已经存在!', 1, 'unique', Model:: MODEL_BOTH),
// 验证user_email字段格式是否正确,2种写法一样
array('user_email', 'email', '邮箱格式不正确!', 0, '', Model:: MODEL_BOTH),
array('user_email', 'email', '邮箱格式不正确!', 0, 'regex', 3),
);
~~~