ThinkPHP 3 2 2中 的自動完成功能!

2022-05-21 07:12:14 字數 4149 閱讀 7722

在處理表單的時候,如果表單的字段量比較大的時候,我們處理起來會比較費勁。這時候,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

think\controller;

class tusercontroller extends

controller else

else

} }

}

這樣乙個表單的自動完成功能就實現了。thinkphp 3.2 過後的框架設計我覺得還是很值得學習的。

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...