本文實例講述了Yii中表單用法。分享給大家供大家參考,具體如下:
在 Yii 中處理表單時,通常需要以下步驟:
1. 創建用于表現所要收集數據字段的模型類。
2. 創建一個控制器動作,響應表單提交。
3. 在視圖腳本中創建與控制器動作相關的表單。
一、創建模型
在編寫表單所需的 HTML 代碼之前,我們應該先確定來自最終用戶輸入的數據的類型,以及這些數據應符合什么樣的規則。模型類可用于記錄這些信息。正如模型章節所定義的,模型是保存用戶輸入和驗證這些輸入的中心位置。
取決于使用用戶所輸入數據的方式,我們可以創建兩種類型的模型。如果用戶輸入被收集、使用然后丟棄,我們應該創建一個表單模型;
如果用戶的輸入被收集后要保存到數據庫,我們應使用一個Active Record。兩種類型的模型共享同樣的基類 CModel,它定義了表單所需的通用接口。
1、定義模型類
例如創建為一個表單模型:
html' target='_blank'>class LoginForm extends CFormModelpublic $username;public $password;public $rememberMe=false;}
LoginForm中定義了三個屬性: $username, $password 和$rememberMe。他們用于保存用戶輸入的用戶名和密碼,還有用戶是否想記住他的登錄的選項。由于 $rememberMe 有一個默認的值false,相應的選項在初始化顯示在登錄表單中時將是未勾選狀態。
我們將這些成員變量稱為特性(attributes)而不是屬性(properties),以區別于普通的屬性(properties)。特性(attribute)是一個主要用于存儲來自用戶輸入或數據庫數據的屬性(propertiy)。
2、聲明驗證規則
一旦用戶提交了他的輸入,模型被填充,我們就需要在使用前確保用戶的輸入是有效的。這是通過將用戶的輸入和一系列規則執行驗證實現的。我們在 rules() 方法中指定這些驗證規則,此方法應返回一個規則配置數組。
class LoginForm extends CFormModelpublic $username;public $password;public $rememberMe=false;private $_identity;public function rules()return array(array( username, password , required ), //username 和 password 為必填項array( rememberMe , boolean ), //rememberMe 應該是一個布爾值array( password , authenticate ), //password 應被驗證(authenticated)public function authenticate($attribute,$params)$this- _identity=new UserIdentity($this- username,$this- password);if(!$this- _identity- authenticate())$this- addError( password , 錯誤的用戶名或密碼。 }
rules() 返回的每個規則必須是以下格式:
array( AttributeList , Validator , on = ScenarioList , ...附加選項)
其中:
AttributeList(特性列表)是需要通過此規則驗證的特性列表字符串,每個特性名字由逗號分隔;
Validator(驗證器) 指定要執行驗證的種類;
on 參數是可選的,它指定此規則應被應用到的場景列表;
附加選項 是一個名值對數組,用于初始化相應驗證器的屬性值。
有三種方式可在驗證規則中指定 Validator:
第一, Validator 可以是模型類中一個方法的名字,就像上面示例中的 authenticate 。驗證方法必須是下面的結構:
public function 驗證器名稱($attribute,$params) { ... }
第二,Validator可以是一個驗證器類的名字,當此規則被應用時,一個驗證器類的實例將被創建以執行實際驗證。規則中的附加選項用于初始化實例的屬性值。驗證器類必須繼承自 CValidator。
第三,Validator 可以是一個預定義的驗證器類的別名。在上面的例子中,required 名字是 CRequiredValidator 的別名,它用于確保所驗證的特性值不為空。下面是預定義的驗證器別名的完整列表:
boolean: CBooleanValidator 的別名,確保特性有一個 CBooleanValidator::trueva lue 或 CBooleanValidator::falseva lue 值。
captcha: CCaptchaValidator 的別名,確保特性值等于 CAPTCHA 中顯示的驗證碼。
compare: CCompareva lidator 的別名,確保特性等于另一個特性或常量。
email: CEmailValidator 的別名,確保特性是一個有效的Email地址。
default: CDefaultValueva lidator 的別名,指定特性的默認值。
exist: CExistValidator 的別名,確保特性值可以在指定表的列中可以找到。
file: CFileva lidator 的別名,確保特性含有一個上傳文件的名字。
filter: CFilterValidator 的別名,通過一個過濾器改變此特性。
in: CRangeva lidator 的別名,確保數據在一個預先指定的值的范圍之內。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答