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

正文內(nèi)容

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

2025-06-29 09:01本頁(yè)面
  

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