当前位置:K88软件开发文章中心网站服务器框架ThinkPHP → 文章内容

自动验证

减小字体 增大字体 作者:佚名  来源:网上搜集  发布时间:2019-1-26 15:33:20

操作专门指定验证时间为4。我们定义验证规则如下: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{ // 验证通过 执行登录操作}动态验证如果采用动态验证的方式,就比较灵活,可以根据不同的需要,在操作同一个模型的时候使用不同的验证规则,例如上面的静态验证方式可以改为:$rules = array( array('verify','require','验证码必须!'), //默认情况下用正则进行验证 array('name','','帐号名称已经存在!',0,'unique',1), // 在新增的时候验证name字段是否唯一 array('value',array(1,2,3),'值的范围不正确!',2,'in'), // 当值不为空的时候判断是否在一个范围内 array('repassword','password','确认密码不正确',0,'confirm'), // 验证确认密码是否和密码一致 array('password','checkPwd','密码格式不正确',0,'function'), // 自定义函数验证密码格式);$User = M("User"); // 实例化User对象if (!$User->validate($rules)->create()){ // 如果创建失败 表示验证没有通过 输出错误提示信息 exit($User->getError());}else{ // 验证通过 可以进行其他数据操作}动态验证不依赖模型类的定义,所以通常用M函数实例化模型就可以错误信息多语言支持如果你希望支持多语言的错误信息提示,那么可以在验证规则里面如下定义:protected $_validate = array( array('verify','require','{%VERIFY_CODE_MUST}'), array('name','','{%ACCOUNT_EXISTS}',0,'unique',1), );其中VERIFY_CODE_MUST和ACCOUNT_EXISTS是我们在语言包里面定义的多语言变量。如果是采用动态验证方式,则比较简单,直接在定义验证规则的时候使用L方法即可,例如:$rules = array( array('verify','require',L('VERIFY_CODE_MUST')), array('name','',L('ACCOUNT_EXISTS'),0,'unique',1), );批量验证系统支持数据的批量验证功能,只需要在模型类里面设置patchValidate属性为true( 默认为false),protected $patchValidate = true;设置批处理验证后,getError() 方法返回的错误信息是一个数组,返回格式是:array("字段名1"=>"错误提示1","字段名2"=>"错误提示2"... )前端可以根据需要需要自行处理,例如转换成json格式返回:$User = D("User"); // 实例化User对象if (!$User->create()){ // 如果创建失败 表示验证没有通过 输出错误提示信息 $this->ajaxReturn($User->getError());}else{ // 验证通过 可以进行其他数据操作}

上一页  [1] [2] 


自动验证