freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內容

yii中文開發(fā)手冊-資料下載頁

2025-06-29 09:01本頁面
  

【正文】 mes。8. 如果需要 internationalization國際化功能,編寫翻譯語句。9. 使用 caching 技術緩存數(shù)據(jù)和頁面。10. 最后 tune up調整程序和發(fā)布。以上每個步驟,有可能需要編寫測試案例來測試。使用表單,開發(fā)者往往需要使用已存在的數(shù)據(jù)或者默認值來填充表單,用以驗證用戶輸入,為無效的輸入展示恰當?shù)腻e誤信息, 使用了它的 MVC 架構,大大簡化了這個工作流程.使用 Yii 通常要按以下步驟來處理表單 :1. 創(chuàng)建一個模型類來描述需要被收集的數(shù)據(jù)字段。 2. 創(chuàng)建一個控制器動作代碼來響應提交的表單。 3. 在視圖腳本里創(chuàng)建一個表單關聯(lián)到控制器動作. 在下一節(jié),我們將詳細介紹這些步驟的具體實現(xiàn).創(chuàng)建模型在編寫我們所需要的表單的HTML代碼之前,我們先得決定我們要從用戶那里獲取什么樣的數(shù)據(jù),作為已定義的 Model 的一部分,是用來保存,校驗用戶輸入的核心.根據(jù)用戶輸入的用途,使用然后被丟棄了, 我們應該創(chuàng)建一個 form model 模型。如果用戶的數(shù)據(jù)被收集, 然后保存到數(shù)據(jù)庫,我們則應該選擇使用 active record 模型. 這兩種模型共享著定義了表單所需通用界面的基類 CModel.注意: 本章中我們主要使用表單模型的示例. 它也同樣適用于 active record 模型.定義模型類以下我們會創(chuàng)建一個 LoginForm ,所以我們創(chuàng)建的 LoginForm 是一個表單模型.class LoginForm extends CFormModel{ public $username。 public $password。 public $rememberMe=false。}LoginForm 聲明了三個屬性:$username, $password 和 $, $rememberMe 有一個默認值 false ,其相應的選項框在表單初始化顯示時是沒有被選中的.說明: 為了替代這些成員變量屬性的叫法,我們使用 特性 主要用于儲存用戶輸入數(shù)據(jù)或數(shù)據(jù)庫讀取數(shù)據(jù)的屬性.聲明有效的規(guī)則一旦用戶提交了他的表單,模型獲得了到位的數(shù)據(jù), rules() 方法中指定這一有效的規(guī)則.class LoginForm extends CFormModel{ public $username。 public $password。 public $rememberMe=false。 public function rules() { return array( array(39。username, password39。, 39。required39。), array(39。password39。, 39。authenticate39。), )。 } public function authenticate($attribute,$params) { if(!$thishasErrors()) // 我們只想校驗沒有輸入錯誤 { $identity=new UserIdentity($thisusername,$thispassword)。 if($identityauthenticate()) { $duration=$thisrememberMe ? 3600*24*30 : 0。 // 30 天 Yii::app()userlogin($identity,$duration)。 } else $thisaddError(39。password39。,39。Incorrect password.39。)。 } }}以上的代碼中 username 和 password 都是必填的,password 將被校驗.每個通過 rules() 返回的規(guī)則必須遵照以下格式:array(39。AttributeList39。, 39。Validator39。, 39。on39。=39。ScenarioList39。, ...附加選項)AttributeList 是需要通過規(guī)則校驗的以逗號分隔的特性名稱集的字符串。 校驗器(Validator) 指定了使用哪種校驗方式。 on 參數(shù)是規(guī)則在何種情況下生效的場景列表。附加選項是用來初 始化相應校驗屬性值的名稱值的配對.在一個校驗規(guī)則中有三種方法可以指定 校驗器 . 第一, 校驗器 可以是模型類中的一個方法的名稱,就像以上例子中的 authenticate . 校驗方法必須是以下結構 :/** * @param string 用于校驗特性 * @param array 指定了校驗規(guī)則 */public function ValidatorName($attribute,$params) { ... }第二, 校驗器 ,校驗類的實例將被創(chuàng)建用于執(zhí)行實際的校驗. CValidator.注意: 當為一個active record指定規(guī)則時,我們可以使用名稱為 on 是39。insert39。 或者 39。update39。 以便只有當插入或者更新記錄時,規(guī)則 將在任何 save() 被調用的時候生效.第三 , Validator , required 指向了 CRequiredValidator ,: captcha: CCaptchaValidator 的別名,確保了特性的值等于 CAPTCHA 顯示出來的驗證碼. pare: CCompareValidator 的別名, 確保了特性的值等于另一個特性或常量. CEmailValidator 的別名,確保了特性的值是一個有效的電郵地址. default: CDefaultValueValidator 的別名, 為特性指派了一個默認值. file: CFileValidator 的別名, 確保了特性包含了一個上傳文件的名稱. filter: CFilterValidator 的別名, 使用一個過濾器轉換特性的形式. in: CRangeValidator 的別名, 確保了特性出現(xiàn)在一個預訂的值列表里. length: CStringValidator 的別名, 確保了特性的長度在指定的范圍內. match: CRegularExpressionValidator 的別名, 確保了特性匹配一個正則表達式. numerical: CNumberValidator 的別名, 確保了特性是一個有效的數(shù)字. required: CRequiredValidator 的別名, 確保了特性不為空. type: CTypeValidator 的別名, 確保了特性為指定的數(shù)據(jù)類型. unique: CUniqueValidator 的別名, 確保了特性在數(shù)據(jù)表字段中是唯一的. url: CUrlValidator 的別名, 確保了特性是一個有效的路徑.以下我們列出了使用預定義校驗器的例子:// username 不為空array(39。username39。, 39。required39。),// username 必須大于 3 小于 12 字節(jié)array(39。username39。, 39。length39。, 39。min39。=3, 39。max39。=12),// 在注冊場景中, password 必須和 password2 一樣array(39。password39。, 39。pare39。, 39。pareAttribute39。=39。password239。, 39。on39。=39。register39。),// 在登錄場景中, password 必須被校驗array(39。password39。, 39。authenticate39。, 39。on39。=39。login39。),安全的特性分配注意: 自 版起,基于場景的特性分配開始生效.在一個模型實例被創(chuàng)建之后,:$model=new LoginForm。if(isset($_POST[39。LoginForm39。])) $modelsetAttributes($_POST[39。LoginForm39。], 39。login39。)。以上的是一個繁重的任務,它在 login 場景(第二給參數(shù)指定的)中為每個 $_POST[39。LoginForm39。] :foreach($_POST[39。LoginForm39。] as $name=$value){ if($name is a safe attribute) $model$name=$value。}決定一個數(shù)據(jù)項是否是安全的,基于一個名為 safeAttributes 方法的返回值和數(shù)據(jù)項被指定的場景. 默認的,這個方法返回所有公共成員變量作為 CFormModel 的安全特性,而它也返回了除了主鍵外, 表中所有字段名作為 CActiveRecord .例如, 一個用戶模型可以包含很多特性,但是在 login ,我們只能使用 username 和 password :public function safeAttributes(){ return array( parent::safeAttributes(), 39。login39。 = 39。username, password39。, )。}safeAttributes 方法更準確的返回值應該是如下結構的 :array( //這些屬性可以在任意場景被大量分配的 //以下特性并沒有被明確的分配 39。attr1, attr2, ...39。, * //以下特性只可以在場景1中被大量分配的 39。scenario139。 = 39。attr2, attr3, ...39。, * //以下特性只可以在場景2中被大量分配的 39。scenario239。 = 39。attr1, attr3, ...39。,)如果模型不是場景敏感的(比如,它只在一個場景中使用,或者所有場景共享了一套同樣的安全特性),返回值可以是如下那樣簡單的字符串.39。attr1, attr2, ...39。而那些不安全的數(shù)據(jù)項,:$modelpermission=39。admin39。$modelid=1。觸發(fā)校驗一旦用戶提交的數(shù)據(jù)到位,我們可以調用 CModel::validate() . 而 CActiveRecord 中的校驗可以在我們調用它的 CActiveRecord::save() 方法時自動觸發(fā).當我們調用 CModel::validate() 方法, on ,而調用了 CModel::validate() 方法,只有那些 on 選項沒有設置的規(guī)則才會被執(zhí)行.例如,在注冊一個用戶時,我們運行以下腳本來執(zhí)行校驗 :$modelvalidate(39。register39。)。我們可以按以下在表單模型里聲明校驗規(guī)則:public function rules(){ return array( array(39。username, password39。, 39。required39。), array(39。password_repeat39。, 39。required39。, 39。on39。=39。register39。), array(39。password39。, 39。pare39。, 39。on39。=39。register39。), )。}結果是,第一條規(guī)則在所有場景生效,而接下來的兩條規(guī)則只有在 register 場景中生效.注意: 自 版起,基于場景的校驗開始生效.檢索校驗錯誤我們可以使用 CModel::hasErrors() 來檢查是否有校驗錯誤,如果是,我們可以使用 CModel::getErrors() 來獲取錯誤信息. 上述兩者中的任何一個方法都可以用于所有特性或者單獨的一個特性.特性標簽當設計一個表單時,我們通常需要為每個輸入字段顯示標簽. ,但是如果我們在對應的模型里指定了標簽,那么它將提供更強的彈性和更好的便利性.CModel attributeLabels() 方法,在模型里指定標簽將允許我們創(chuàng)建一個更快捷更強大的表單.編寫ACTION一旦有了model,我們可以開始編寫操作model的邏輯。我們把這些邏輯放在controller action里面。用錄入登陸表單這個例子來說明,如下是需要的代碼:public function actionLogin(){ $form=new LoginForm。 if(isset($_POST[39。LoginForm39。])) { // 收集用戶輸入的數(shù)據(jù) $formattributes=$_POST[39。LoginForm39。]。 // 驗證用戶輸入,如果無效則重定位到前個頁面 if($formvalidate()) $thisredirect(Yii::app()userreturnUrl)。 } // 顯示登陸表單 $thisrender(39。login39。,array(39。
點擊復制文檔內容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1