亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > PHP > 正文

Yii框架form表單用法實例

2024-05-04 23:28:36
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Yii框架form表單用法,實例分析了Yii中form表單的實現方法與相關技巧,非常具有實用價值,需要的朋友可以參考下
 
 

本文實例講述了Yii框架form表單用法。分享給大家供大家參考。具體方法如下:

使用表單

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

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

一、創建模型

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

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

1、定義模型類

例如創建為一個表單模型:

復制代碼代碼如下:
class LoginForm extends CFormModel
{
public $username;
public $password;
public $rememberMe=false;
}

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

 

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

2、聲明驗證規則

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

復制代碼代碼如下:
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() 返回的每個規則必須是以下格式:
復制代碼代碼如下:
array('AttributeList', 'Validator', 'on'=>'ScenarioList', ...附加選項)

其中的參數:

 

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

二、form表單更新數據時候選值問題

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');
}

比如現在我要更新一條數據,這條數據的欄目有兩個,假設該文章id是21,是屬于兩個欄目,那么在relationship表中的數據就應該是
復制代碼代碼如下:
id post_id category_id
1    21          1 
2    21          2

其中id是流水,該文章的category是1和2. 該欄目的數據我通過建立Relationship.php的AR能夠獲取,
_from中表單我是這么寫的:
復制代碼代碼如下:
<div class='row'>
  <?php echo $form->labelEx($model,'cid'); ?>
  <?php echo $form->checkBoxList($model,'cid',
    Category::getAllCategory(),array(
     'style'=>'display:inline;',
     'separator'=>"<br />n",
     'template'=>'{input}{label}',
     'labelOptions'=>array('style'=>'display:inline')));
  ?>
  <?php echo $form->error($model,'cid'); ?>
</div>

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

 

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

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

希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产美女精彩久久| 日韩在线中文字幕| 亚洲精品永久免费精品| 日韩av片免费在线观看| 久久精品人人做人人爽| 成人亲热视频网站| 亚洲四色影视在线观看| 一个人看的www久久| 欧美亚洲视频在线看网址| 国产精品免费一区| 精品日韩中文字幕| 国产精品爽黄69天堂a| 国产精品福利网站| 91香蕉嫩草影院入口| 欧美wwwxxxx| 成人免费观看网址| 色七七影院综合| 91网在线免费观看| 久久精品国产成人精品| 国产精品一香蕉国产线看观看| 成人女保姆的销魂服务| 亚洲欧洲成视频免费观看| 久久久久久91| www.亚洲人.com| 亚洲午夜国产成人av电影男同| 欧美日韩国产精品一区二区不卡中文| 在线亚洲国产精品网| 国产日韩精品电影| 日韩在线观看高清| 51精品在线观看| 97视频在线观看网址| 日韩色av导航| 日韩午夜在线视频| 国产精品大陆在线观看| 亚洲www永久成人夜色| 91精品国产自产在线老师啪| 亚洲成年网站在线观看| 成人国产精品日本在线| 成人在线播放av| 国产精品成人观看视频国产奇米| 国产91九色视频| 欧美日韩免费看| 日韩a**站在线观看| 九九精品视频在线| 一区二区三区天堂av| 欧美电影在线播放| 狠狠久久五月精品中文字幕| 成人精品久久一区二区三区| 国产精品视频999| 精品久久久久久亚洲国产300| 国产欧美精品xxxx另类| 久久亚洲精品成人| 亚洲第一二三四五区| 日韩成人在线电影网| 日韩精品久久久久| 欧美激情奇米色| 午夜精品理论片| 久久久久久久久久久免费精品| 欧美日韩亚洲视频一区| 欧美成人高清视频| 日韩av不卡在线| 色偷偷偷亚洲综合网另类| 亚洲激情中文字幕| 欧美极度另类性三渗透| 欧美激情欧美狂野欧美精品| 国产在线日韩在线| 国产精品久久中文| 日韩在线视频播放| 欧美视频在线观看 亚洲欧| 亚洲精品国产成人| 91精品视频播放| 国产在线98福利播放视频| 日本精品久久久| 久久人人爽亚洲精品天堂| 亚洲福利视频二区| 亚洲欧美在线x视频| 欧美夫妻性视频| 欧美国产日韩一区二区在线观看| 久热爱精品视频线路一| xvideos国产精品| 国产精品亚发布| 久久精品国产精品| www.久久草.com| 中文字幕日韩欧美精品在线观看| 国产欧美日韩免费看aⅴ视频| 亚洲精品福利资源站| 欧美在线一级va免费观看| 日韩av电影手机在线| 欧美精品午夜视频| 亚洲图片欧美午夜| 97色在线观看免费视频| 国产精品一区=区| 中日韩美女免费视频网址在线观看| 亚洲电影免费观看高清完整版在线观看| 久久久久久久久久婷婷| 正在播放欧美一区| 一区二区欧美日韩视频| 国产精品大片wwwwww| 国产精品都在这里| 国产亚洲美女精品久久久| 97超级碰碰人国产在线观看| 国产精品免费看久久久香蕉| 亚洲人线精品午夜| 久久精品99久久久久久久久| 欧美日韩国产精品专区| 亚洲小视频在线| 久久精品视频导航| 91人人爽人人爽人人精88v| 91产国在线观看动作片喷水| 综合网中文字幕| 高清欧美性猛交| 日本老师69xxx| 亚洲第一页中文字幕| 亚洲精品一区二区三区婷婷月| 精品福利一区二区| 国产69精品久久久久9| 国产精品www网站| 国产精品久久久久久久久久久不卡| 国产一区二区精品丝袜| 精品久久久久久中文字幕大豆网| 国产精品96久久久久久又黄又硬| 亚洲国产一区二区三区四区| 亚洲图片欧美午夜| 国产成人免费91av在线| 国内精品中文字幕| 精品国产91久久久久久| 亚洲欧美中文日韩在线| 伊人青青综合网站| 日韩中文视频免费在线观看| 欧美大片va欧美在线播放| 精品亚洲一区二区三区在线播放| 日韩中文字幕免费| 97精品国产aⅴ7777| 大量国产精品视频| 欧美性极品少妇精品网站| 中日韩午夜理伦电影免费| 久久视频免费观看| 精品久久国产精品| 日韩av在线影视| 美女av一区二区三区| 国产欧美va欧美va香蕉在| 日韩免费av一区二区| 欧美一区第一页| 国产精品成人一区二区| 亚洲午夜精品久久久久久久久久久久| 欧美激情啊啊啊| 国产欧美日韩免费看aⅴ视频| 中文字幕精品久久| 亚洲精品99久久久久中文字幕| 在线精品国产成人综合| 亚洲精品免费在线视频| 亚洲专区中文字幕| 国产在线日韩在线| 欧美日韩在线视频观看| 欧美一区亚洲一区| 国产日韩欧美视频| 日韩精品免费在线播放| 91夜夜未满十八勿入爽爽影院| 奇米成人av国产一区二区三区| 久99九色视频在线观看| xxxxxxxxx欧美| 亚洲国产成人91精品| 久久久久久欧美| 国产精品九九九|