在處理表單的時候,如果表單的字段量比較大的時候,我們處理起來會比較費勁。這時候,thinkphp的自動完成功能可以很好的解決這個問題。
這裡介紹的是thinkphp中的靜態驗證:
靜態定義方式因為必須定義模型類,所以只能用d函式例項化模型
這個表是用來測試用的。
我們需要乙個表單:
<這個頁面中的表單!form
action
=""name
="tuserform"
method
="post"
>
<
table
>
<
tr>
<
td>使用者名稱:
td>
<
td><
input
type
="text"
name
="username"
value
=""/>
td>
tr>
<
tr>
<
tdtd
>
<
td><
input
type
="text"
name
="email"
value
=""/>
td>
tr>
<
tr>
<
td>內容:
td>
<
td><
textarea
name
="content"
id=""
>
textarea
>
td>
tr>
<
tr>
<
td>驗證碼:
td>
<
td><
input
type
="text"
name
="verify"
value
=""/><
img
src=""
alt=""
onclick
="this.src=''+'?ran
='+math.random()"
/>
td>
tr>
<
tr>
<
td>
td>
<
td><
input
type
="submit"
value
="添 加"
/>
td>
tr>
table
>
form
>
下面的部分是關鍵,就是定義乙個模型
namespace home\model;詳細解釋一下這裡的定義:usethink\model;
class testusermodel extends
model $/','字母開頭,4-20位數字字母或下劃線',1,'regex',3)
,array('email','require','請輸入郵箱',1)
,array('email','email','郵箱格式錯誤',1)
,array('email','','郵箱已經存在',0,'unique',1)
,array('content','require','請輸入內容',1)
,array('content','checkcontent','發布內容最少5個,最多255個字元',1,'callback',1)
,array('verify','require','請輸入驗證碼',1)
,array('verify','checkverify','驗證碼錯誤',0,'callback',1)
);protected
$_auto = array
(
array('create_time','time',1,'function')
);protected
function
checkcontent()
else
}protected
function
checkverify()
}
$_validate=array(
array(驗證欄位1,驗證規則,錯誤提示,[驗證條件,附加規則,驗證時間])
,array(驗證欄位2,驗證規則,錯誤提示,[驗證條件,附加規則,驗證時間])
這是模型中必須要定義的乙個陣列,這個陣列再定義各個表單中的字段規則:
陣列中的「子陣列」的元素:
①驗證字段(必須):定義要操作的欄位名,即表單中name="?"的?號部分
②驗證規則(必須):
要進行驗證的規則,需要結合附加規則,如果在使用正則驗證的附加規則情況下,
系統還內建了一些常用正則驗證的規則,可以直接作為驗證規則使用,
③提示資訊(必須):
用於驗證失敗後的提示資訊定義
以上①②③部分是必須定義的部分:即驗證字段、驗證規則、提示資訊
系統提供的內建驗證規則往往不能滿足所有需要,這時候我們就要定義附加規則:
④驗證條件:
⑤附加規則:
規則說明
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不可用於判斷主鍵字段本身
那麼在控制器中應該如何使用這個模型類呢namespace home\controller;
use這樣乙個表單的自動完成功能就實現了。thinkphp 3.2 過後的框架設計我覺得還是很值得學習的。think\controller;
class tusercontroller extends
controller else
else
} }
}
ThinkPHP3 2 2中開啟REWRITE模式
1 1 2 return array 3 url模式 4 url model 2,5 2 在thinkphp的url模式中,rewrite模式去掉了url位址中的入口檔案index.php,但是需要額外配置web伺服器的重寫規則才能正確訪問。apache伺服器可以通過開啟rewrite模組和分布式配...
ThinkPHP3 2 2的外掛程式控制器功能
3.2.2版本開始支援外掛程式控制器的呼叫,可以通過更加方便的url位址訪問到模組中某個外掛程式定義的控制器。當url中傳入外掛程式控制器變數的時候,會自動定位到外掛程式控制器中www.cppcns.com的操作方法。外掛程式控制器的變數由引數 var addon 進行設定,預設為addon,例如我...
thinkphp3 2 2前後臺公用類架構問題
1 2namespace common controller 3use think controller 4 5 前後臺公用基類 6 modify author jack 7 modify time 2014 7 128 9class basecontroller extends controlle...