#regex |
正規驗證,定義的驗證規則是一個正規表示式(預設) |
function |
函數驗證,定義的驗證規則是一個函數名稱 |
callback |
方法驗證,定義的驗證規則是目前模型類別的一個方法 |
#confirm |
驗證表單中的兩個欄位是否相同,定義的驗證規則是一個欄位名稱 |
equal |
#驗證是否等於某個值,該值由前面的驗證規則定義 |
notequal |
驗證是否不等於某個值,該值由前面的驗證規則定義(3.1.2版本新增) |
##in | 驗證是否在某個範圍內,定義的驗證規則可以是數組或逗號分割的字串 |
notin | 驗證是否不在在某個範圍內,定義的驗證規則可以是陣列或逗號分割的字串(3.1.2版本新增) |
length | 驗證長度,定義的驗證規則可以是一個數字(表示固定長度)或數字範圍(例如3,12 表示長度從3到12的範圍) |
between##驗證範圍,定義的驗證規則表示範圍,可以使用字串或數組,例如1,31或array(1,31) |
|
notbetween
驗證不在某個範圍,定義的驗證規則表示範圍,可以使用字串或陣列(3.1.2版本新增) |
|
#expire
驗證是否在有效期,定義的驗證規則表示時間範圍,可以到時間,例如可以使用2012-1-15,2013-1-15 表示目前提交有效期限在2012-1-15到2013-1-15之間,也可以使用時間戳定義 |
|
#ip_allow
驗證IP是否允許,定義的驗證規則表示允許的IP位址列表,用逗號分隔,例如201.12.2.5,201.12.2.6 |
|
#ip_deny
驗證IP是否禁止,定義的驗證規則表示禁止的ip位址列表,用逗號分隔,例如201.12.2.5,201.12.2.6 |
|
#unique
驗證是否唯一,系統會根據欄位目前的值查詢資料庫來判斷是否存在相同的值,當表單資料包含主鍵欄位時unique不可用於判斷主鍵欄位本身 | |
#验证时间(可选):共有1,2,3三种,1:新增数据时候验证;2:编辑数据时候验证;3:全部情况下验证(默认);也可以可以根据业务需要增加其他的验证时间
下面附上代码:以注册为例
前台页面比较简单,代码就不贴出来了,下面是前台注册界面截图
控制器代码:
//注册
public function register(){
$user = new \Model\UserModel();
//两个逻辑:收集,展示
if (!empty($_POST)) {
//create()方法收集表单($_POST)信息并返回,同时触发表单自动验证,过滤非法字段
$date = $user->create();
//通过create()方法的返回值$date判断验证是否成功
if ($date) { //返回实在数据的时候才进行添加
//implode()把数组变为字符串
$date['user_hobby'] = implode(',', $date['user_hobby']);
$info = $user->add($date);
if ($info) {
//跳转首页
$this->redirect('Index/index');
}
}else{
//把错误信息分配到前台模板
$error = $user->getError();
$this->assign('error',$error);
}
}
//调用view视图
$this->display();
}
模型类代码:
class UserModel extends Model{
//是否批量处理验证,批量获取全部的错误验证信息
protected $patchValidate = true; //默认为false
//自动验证定义
protected $_validate = array(
//array(字段,验证规则,错误提示,验证条件,附加规则,验证时间)
//①用户名验证,不能为空
array('username','require','用户名不能为空'),
array('username','','该用户名已经被占用','0','unique'),
//②密码验证,不为空
array('password','require','密码不能为空'),
//③验证确认密码,必须填写,与密码保持一致
array('password2','require','确认密码必须填写'),
array('password2','password','两次密码保持一致',0,'confirm'),
//④邮箱验证
array('user_email','email','邮箱格式不正确',2),
//⑤qq验证,数字组成,5-12位
array('user_qq','number','qq必须是数字'),
array('user_qq','5,12','位数在5-12位之间',0,'length'),
//⑥学历验证,必须选一个
array('user_xueli','2,5','学位必须选择一个',0,'between'),
//⑦爱好验证,必须选择二个以上
//因为爱好返回的是数组,附加规则中没有可以直接用的规则,所以需自定义方法,用callback方法验证
array('user_hobby','check_hobby','爱好必须选两项或以上',1,'callback'),
);
//定义方法进行爱好验证
//参数$arg代表被验证的表单信息
function check_hobby($arg)
{
//判断数组长度是否大于2
if (count($arg)<2) {
return false; //会自动输出验证错误信息
}
return true;
}
}
把验证的错误信息在模板中给展示出来(部分代码)
<td style="width:13%; text-align: right;">
<label for="User_username" class="required">用户名
<span>*</span></label>
</td>
<td style="width:87%;">
<input class="inputBg" size="25" name="username" id="User_username" type="text" value="" />
<span style="color:red;"><{$error.username|default:""}></span>
</td>
结果:
以上就是本文的全部内容,希望对大家的学习有所帮助,更多相关内容请关注PHP中文网!
相关推荐:
对THINKPHP的addAll支持的最大数据量的分析
关于ThinkPHP CURD方法之table方法
关于ThinkPHP利用getlist方法实现数据搜索功能的分析