关于thinkphp 3.2.2版本,有些问题不太明白?

1、自动验证格式正确吗?若不正确该怎么写?
2、假如我要验证user_name的格式是否正确,还要验证是否唯一,需要添加两条array吗?












噜噜哒
浏览 107回答 2
2回答

长风秋雁

1、array('user_name','^[0-9]*$','用户名不符合规则',self::VALUE_VALIDATE,'regex',self::MODEL_BOTH),试下这样2、验证是否唯一,自定义个查询条件,多增加1个array就可以了。

一只甜甜圈

ThinkPHP 自动验证格式如下array(验证字段,验证规则,错误提示[,验证条件][,附加规则][,验证时间])ThinkPHP 自动验证定义的附加规则如下:regex:使用正则进行验证(默认)unique:验证唯一性confirm:验证表单中的两个字段是否相同equal:验证是否等于某个值in:验证是否在某个范围内function:使用函数验证callback:使用方法验证自动验证例子各种自动验证参考例子如下:// 默认情况下用正则进行验证array('title','require','标题不能为空。'),array('order','number','排序必须是数字。',2),array('email','email','邮箱格式不符合要求。'),array('qq','qq','QQ号码不正确。'),// 在新增的时候验证标题title字段是否唯一array('title','','标题已经存在!',0,'unique',1),&nbsp;// 验证确认密码是否和密码一致array('repassword','password','确认密码不正确。',0,'confirm'),&nbsp;// 验证class填写的值为 一班array('class','一班','班级必须填写一班。',0,'equal'),&nbsp;// 当值不为空的时候判断是否在一个范围内array('value',array(1,2,3),'值的范围不正确。',2,'in'),&nbsp;// 自定义函数验证用户名格式array('username','checkName','用户名格式不正确。',0,'function'),&nbsp;// 在注册或更改资料是调用 checkEmail 方法检查邮箱array('email','checkEmail',1,'callback'),使用正则表达式(regex)验证上述几类附加规则中,使用正则表达式是经常使用的,也是系统默认的验证附加规则。系统内置了如下正则检测规则:require(必须)、email(邮箱格式)、url(URL地址)、currency(货币)、number(数字)、qq(QQ号码)、english(英文字符)。这些附加规则可以直接使用,如果这些附加规则无法满足要求,可以使用自定义的正则规则:array('username','/^{3,15}$/','用户名不符合要求。'),该规则要求用户名只能为英文字符及下划线和数字组成,且长度为3-15个字节。要了解更多的正则表达式规则参见《PHP 常用正则表达式整理》。使用自定义函数(function)验证使用自定义函数验证附加规则,函数可以是 Common/common.php 里的自定义函数,也可以是 PHP 的内置函数:class UserModel extends Model{protected $_validate = array(array('username','checkName','用户名不符合要求。',0,'function'),};}自定义 checkName 函数:function checkName($username){if(!preg_match('/^{3,15}$/', $username)){return false;}else{return true;}}提示:对于用户名的规则可以直接使用正则验证而无需函数,在此只是为了演示自定义函数的验证的用法而已。使用方法(callback)验证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 自动验证功能十分强大,能满足对表单的各种验证要求。&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP