自動驗證是tp在create資料的時候,自動對資料進行驗證。
tp提供了兩種驗證方式:靜態驗證($_validate屬性----自定義的模型的)和validate()方法
1.靜態驗證-----$_validate屬性
總體的格式:
1驗證欄位----驗證規則-----錯誤提示-----驗證條件-----附加規則----驗證時間<?php
2namespace home\model;
3use
think\model;
4class usermodel extends
model
11 ?>
紅色的是必選字段,黑色的是附加字段
驗證字段:顧名思義,就是需要驗證的字段
驗證規則:系統內建或自定義的規則
驗證條件:
1.self::exists_validate 或 0,表示存在欄位就驗證(預設) ;
2.self::must_validate 或 1,表示必須驗證;
3.self::value_validate 或 2,表示值不為空的時候驗證。
附近規則:
配合驗證規則使用,包括一下規則:
主要新增修改等驗證。
1.self::model_insert 或 1 新增資料時驗證;
2.self::model_update 或 2 編輯資料時驗證;
3.self::model_both 或 3 全部情況下驗證(預設)。
自動驗證是從上到下以此驗證,上面的錯誤,下面不會有錯誤資訊返回
其實自動驗證是很簡單的,熟悉規則之後來看一下例項:
內建驗證規則:
1模型2結果:<?php
3namespace home\model;
4use
think\model;
5class usermodel extends
model
34 ?>
3536
37控制器:
3839
<?php
40//
本類由系統自動生成,僅供測試用途
41namespace home\controller;
42use
think\controller;
43use
common\model\usermodel;
44class indexcontroller extends
controller else65}
66 }
附加:
1**和函式是終極的自定義,還是很強大的//附加規則regex,驗證3-6位純數字
2array('user', '/^\d$/', '不是 3-6 位純正數字', 0, 'regex'),3//
附加規則equal,驗證是否和指定值相等
4array('user', '李炎恢', '值不對等', 0, 'equal'),5//
附加規則notequal,驗證是否與指定值不等
6array('user', '李炎恢', '值不能相等', 0, 'notequal'),7//
附加規則confirm,驗證兩條字段是否相同
8array('user', 'name', '兩個使用者名稱對比不同!',0,'confirm'),9//
附加規則in,某個範圍,可以是陣列或逗號分割的字串
10array('user', array(1,2,3), '不在指定範圍', 0, 'in'),
11array('user', '張三,李四,王五', '不在指定範圍', 0, 'in'),
12//
附加規則notin,某個範圍,可以是陣列或逗號分割的字串
13array('user', array(1,2,3), '不得在指定範圍', 0, 'notin'),
14array('user', '張三,李四,王五', '不得在指定範圍', 0, 'notin'),
15//
附加規則length,驗證長度或數字範圍
16array('user', '3', '不得小於 3 位', 0, 'length'),
17array('user', '3,5', '不得小於 3 位,不得大於 5 位', 0, 'length'),
18//
附加規則between,驗證某個範圍,數字或逗號字串
19array('user', array(3,5), '必須是 3-5 之間的數字', 0, 'between'),
20array('user', '3,5', '必須是 3-5 之間的數字', 0, 'between'),
21//
附加規則notbetween,驗證某個範圍,數字或逗號字串
22array('user', array(3,5), '必須不是 3-5 之間的數字', 0, 'notbetween'),
23array('user', '3,5', '必須不是 3-5 之間的數字', 0, 'notbetween'),
24//
附加規則expire,設定有效期範圍,必須是表單提交有效,可以是時間戳
25array('user', '2014-1-10,2015-10-10', '時間已過期', 0, 'expire'),
26//
附加規則ip_deny,ip禁止列表
27array('user', '127.0.0.1', '當前 ip 被禁止', 0, 'ip_deny'),
28//
附加規則ip_allow,ip允許列表
29array('user', '127.0.0.1', '當前 ip 沒有被允許', 0, 'ip_allow'),
30//
附加規則callback,**驗證
31array('user', 'checklength', '使用者名稱必須在 3-5 位', 0, 'callback', 3,
32array(3,5)),
33//
**方法
34protected n function checklength($str,$min,$max
) else42}
43//
附加規則function,函式驗證
44array('user', 'checklength', '使用者名稱必須在 3-5 位', 0, 'function', 3,
45array(3,5)),
46//
在 common 資料夾下的 common 資料夾建立 function.php 檔案,會自動載入
47function checklength($str,$min,$max
) e else55}
56如果有多個欄位都包含錯誤,預設只顯示乙個錯誤。如果想顯示全部錯誤,可以設定屬
57性:
58//
批量驗證
59 d protected
$patchvalidate = true;60
如果是直接 post 過來的,直接使用 create()方法即可。
61//
控制器create()方法自動呼叫驗證
62$user = d('user');
63if ($user->create()) else
69ps:由於使用的 usermodel 模型類,所以必須是 d()方法例項化。
70如果想把錯誤資訊返回給ajax處理,可以是同ajaxreturn()方法返回json資料。
71//
返回json格式
72$this->ajaxreturn($user->geterror());
73//
1指定新增資料驗證,2表示修改,
74 f if ($user->create($_post,1)) {} //
一般會自動判斷
2.動態驗證----動態驗證就是把驗證的規則放在控制器端,這樣,在操作的時候比較靈活,缺點就是比較混亂。
1//動態驗證
2$rule = array(3
array('user', 'require', '使用者名稱不得為空'),4);
5$user = m('user');
6$data['user'] = '';
7if ($user->validate($rule)->create($data
)) e else
掌握Thinkphp3 2 0 自動完成
自動完成,是在create資料的時候自動執行的乙個或多個動作 自動完成也分為動態和靜態兩種 格式 完成規則 array array 完成欄位1,完成規則,完成條件,附加規則 array 完成欄位2,完成規則,完成條件,附加規則 完成字段 必填,需要的欄位名 完成規則 必填,配合附加規則完成 完成條件...
掌握Thinkphp3 2 0 標籤庫
1.什麼是內建標籤?什麼是標籤擴充套件庫?cx.class.php 和 html.class.php 2.怎麼載入非內建標籤,怎麼使用?兩種方式載入 3.怎麼擴充套件自定義的標籤?仿照html.class.php寫 仔細回答這3個問題 問題一 think library think template...
掌握Thinkphp3 2 0 模版基礎
我們將要學習一下 thinkphp 模版,thinkphp 內建了乙個基於 xml 的效能 卓越的模版引擎 thinktemplate,使用了動態編譯和快取技術,支援自定義標籤庫,其實我還體會不到其中的強大,慢慢體會吧 一 變數輸出 1.普通變數 控制器提供資料 1 給模版傳遞乙個變數 2 user...