您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-自动验证[下]
发布时间:2017-09-19 11:22:19编辑:雪饮阅读()
附加规则:
模型中定义:
protected $_validate=array(
//array('name',array(1,3,5),'必须in范围内的值',0,'in'),
//array('name',array(1,3,5),'不能是in范围内的值',0,'notin'),
//array('name','张三,李四,王五','找不到指定的内置的值',0,'in'),
//array('name','张三,李四,王五','不能是内置值',0,'notin'),
//array('name','3','只能是3位',0,'length'),
//array('name','3,6','不得小于3位,不得大于6位',0,'length'),
//添加范围包含左右边界
//array('name',array(3,5),'必须是3-5之间的数字',0,'between'),
//条件范围包含左右边界
//array('name',array(3,5),'不能是3-5之间的数字',0,'notbetween'),
//这里的时间不验证手动create的data,只会验证post提交的,时间起止可以是时间戳
//这里验证的时间是提交时间
//array('name','2015-1-1,2018-1-1','不在有效期内',0,'expire'),
//下面的两个ip验证都不会验证手动create的data,是直接获取ip进行验证的
//array('name','127.0.0.1','您的ip被禁止',0,'ip_deny'),
//array('name','127.0.0.1','您的ip没有被允许',0,'ip_allow'),
//回调方式验证
//array('name','checkLength','用户名必须是3-5之间',0,'callback',3,array(3,5)),
/*使用方法集中的方法来验证,此验证和上面的回调方式验证的不同之处在于回调方式验证是将回调方法在当前类中声明而该验证方式需要将验证方法写在核心的Common->Common->function.php中*/
array('name','checkLength','用户名必须是3-5长度之间',0,'function',3,array(3,5)),
);
//str接收回调方式验证的字段值,$min接收回调方式验证的数组的第一个值,$max接收回调方式验证的数组的第二个值
/*
protected function checkLength($str,$min,$max){
//以utf8编码匹配字符串到matches中
preg_match_all('/./u',$str,$matches);
$len=count($matches[0]);
if($len<$min||$len>$max){
return false;
}
else{
return true;
}
}
*/
自定义模型调用:
$data['name']='雪饮大侠';
if($user->create($data)){echo "所有字段验证成功!";}
else{echo $user->getError();}
附加规则-批量提示:
默认情况下,某个字段验证后就只报这个字段验证错误的信息,而后面字段有错误则不会报错,除非上一个字段验证通过。也就是报错是逐一报错的而不是全部字段报错。
自定义模型中:
//开启批量提示
protected $patchValidate=true;
protected $_validate=array(
array('name',array(1,3,5),'必须in范围内的值',0,'in'),
array('email','3','只能是3位',0,'length'),
);
调用:
$user=D("User");
$data['name']='雪饮大侠';
$data['email']='雪饮大侠';
if($user->create($data)){echo "所有字段验证成功!";}
else{
echo "<pre>";
print_r($user->getError());
echo "</pre>";
}
在错误信息的返回值中还可以允许其以ajax格式(json格式)返回:
echo $this->ajaxReturn($user->getError());
动态验证:
该验证和自动验证功能一样,只是可以直接在控制器中声明和使用也不依赖于D方法
$rules=array(
array('name','require','用户名不得为空'),
);
$user=M("User");
$data['name']='';
if($user->validate($rules)->create($data)){echo "所有字段验证成功!";}
else{
echo $this->ajaxReturn($user->getError());
}
关键字词:thinkphp3.2.1,自动验证