真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

如何在Yii框架中使用form表單-創(chuàng)新互聯(lián)

如何在Yii框架中使用form表單?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)堅信:善待客戶,將會成為終身客戶。我們能堅持多年,是因為我們一直可值得信賴。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十年網(wǎng)站建設經(jīng)驗創(chuàng)新互聯(lián)是成都老牌網(wǎng)站營銷服務商,為您提供成都網(wǎng)站建設、網(wǎng)站制作、網(wǎng)站設計、H5場景定制、網(wǎng)站制作、品牌網(wǎng)站設計、微信小程序開發(fā)服務,給眾多知名企業(yè)提供過好品質(zhì)的建站服務。

使用表單


在 Yii 中處理表單時,通常需要以下步驟:

1. 創(chuàng)建用于表現(xiàn)所要收集數(shù)據(jù)字段的模型類。
2. 創(chuàng)建一個控制器動作,響應表單提交。
3. 在視圖腳本中創(chuàng)建與控制器動作相關的表單。

一、創(chuàng)建模型

在編寫表單所需的 HTML 代碼之前,我們應該先確定來自最終用戶輸入的數(shù)據(jù)的類型,以及這些數(shù)據(jù)應符合什么樣的規(guī)則。模型類可用于記錄這些信息。正如模型章節(jié)所定義的,模型是保存用戶輸入和驗證這些輸入的中心位置。

取決于使用用戶所輸入數(shù)據(jù)的方式,我們可以創(chuàng)建兩種類型的模型。如果用戶輸入被收集、使用然后丟棄,我們應該創(chuàng)建一個表單模型; 如果用戶的輸入被收集后要保存到數(shù)據(jù)庫,我們應使用一個Active Record。兩種類型的模型共享同樣的基類 CModel ,它定義了表單所需的通用接口。

1、定義模型類

例如創(chuàng)建為一個表單模型:


復制代碼 代碼如下:

class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe=false;
}


LoginForm 中定義了三個屬性: $username, $password 和 $rememberMe。他們用于保存用戶輸入的用戶名和密碼,還有用戶是否想記住他的登錄的選項。由于 $rememberMe 有一個默認的值 false,相應的選項在初始化顯示在登錄表單中時將是未勾選狀態(tài)。

我們將這些成員變量稱為特性(attributes)而不是屬性(properties),以區(qū)別于普通的屬性(properties)。特性(attribute)是一個主要用于存儲來自用戶輸入或數(shù)據(jù)庫數(shù)據(jù)的屬性(propertiy)。

2、聲明驗證規(guī)則

一旦用戶提交了他的輸入,模型被填充,我們就需要在使用前確保用戶的輸入是有效的。這是通過將用戶的輸入和一系列規(guī)則執(zhí)行驗證實現(xiàn)的。我們在 rules() 方法中指定這些驗證規(guī)則,此方法應返回一個規(guī)則配置數(shù)組。


復制代碼 代碼如下:

class LoginForm extends CFormModel
{
public $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() 返回的每個規(guī)則必須是以下格式:


復制代碼 代碼如下:

array('AttributeList', 'Validator', 'on'=>'ScenarioList', ...附加選項)


其中的參數(shù):

AttributeList(特性列表)是需要通過此規(guī)則驗證的特性列表字符串,每個特性名字由逗號分隔;
Validator(驗證器) 指定要執(zhí)行驗證的種類;
on 參數(shù)是可選的,它指定此規(guī)則應被應用到的場景列表;
附加選項 是一個名值對數(shù)組,用于初始化相應驗證器的屬性值。

二、form表單更新數(shù)據(jù)時候選值問題

category表和post表是多對多,有個中間表relationships,分別記著category_id和post_id
Post.php model中 有關系


復制代碼 代碼如下:

'cids'=>array(self::HAS_MANY,'Relationships','post_id'),

Category.php model中有方法:


復制代碼 代碼如下:

static public function getAllCategory(){
  return CHtml::listData(self::model()->findAll(), 'id', 'name');
}


比如現(xiàn)在我要更新一條數(shù)據(jù),這條數(shù)據(jù)的欄目有兩個,假設該文章id是21,是屬于兩個欄目,那么在relationship表中的數(shù)據(jù)就應該是


復制代碼 代碼如下:

id post_id category_id
1    21          1
2    21          2


其中id是流水,該文章的category是1和2. 該欄目的數(shù)據(jù)我通過建立Relationship.php的AR能夠獲取,
_from中表單我是這么寫的:


復制代碼 代碼如下:


  labelEx($model,'cid'); ?>
  checkBoxList($model,'cid',
    Category::getAllCategory(),array(
     'style'=>'display:inline;',
     'separator'=>"
n",
     'template'=>'{input}{label}',
     'labelOptions'=>array('style'=>'display:inline')));
  ?>
  error($model,'cid'); ?>


問題是我在_form 中不知道要腫么將數(shù)據(jù)填進去?就是我在更新數(shù)據(jù)的時候,欄目應該選中才對。

對于view層數(shù)據(jù)的解耦,拋開checkBoxList,用dropDownList來說舉個例子:

1=>分類1,2=>分類2,表現(xiàn)層(view)中可能是''=>請選擇,1=>分類1,2=>分類2。通過此,你想到了什么?
關于Behavior是這樣的,Behavior只是一種解決方案,稍后再說。目前你要明白的是,你如果要為Model提供一個屬性(像cid[]),需要考慮哪幾點?(提示:要與CActiveRecord接地氣)

關于如何在Yii框架中使用form表單問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關知識。


分享文章:如何在Yii框架中使用form表單-創(chuàng)新互聯(lián)
當前網(wǎng)址:http://weahome.cn/article/igggd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部