和通常的應用程式開發架構一樣,Yii Framework也提供了一組UI小工具(CWidget)來協助程式員設計使用者介面,小組是 CWidget 或其子類的執行個體.它是一個主要用於表現資料的組件.小組通常內嵌於一個視圖來產生一些複雜而獨立的使用者介面.例如, 一個日曆小物件可用於渲染一個複雜的日曆介面.小工具使使用者介面更加可複用.
我們可以按如下視圖指令碼來使用一個小 物件:
beginWidget('path.to.WidgetClass'); ?>
...可能會由小物件擷取的內容主體...
endWidget(); >或者
widget ('path.to.WidgetClass'); ? >;
後者用於不需要任何 body 內容的組件.
小工具可通過配置來定製它的表現.這是通過調用 CBaseController::beginWidget 或 CBaseController::widget 設定其初始化屬性值來完成的.。例如,當使用 CMaskedTextField 小物件時,我們想指定被使用的 mask 。我們通過傳遞一個攜帶這些屬性初始化值的數組來實現.。這裡的數組的鍵是屬性的名稱,而數組的值則是小物件屬性所對應的值。正如以下所示 :
$this->widget('CMaskedTextField',array('mask'=>'99/99/9999'));?>繼承 CWidget 並覆蓋其init() 和 run() 方法,可以定義一個新的小物件:class MyWidget extendsCWidget{public function init(){// 此方法會被 CController::beginWidget() 調用}public function run(){// 此方法會被 CController::endWidget() 調用}}
小工具可以像一個控制器一樣擁有它自己的視圖。預設情況下,小物件的視圖檔案位於包含了小工具類檔案目錄的 views 子目錄之下.這些視圖可以通過調用 CWidget::render() 渲染,這一點和控制器很相似.唯一不同的是,小工具的視圖沒有布局檔案支援。另外,小工具視圖中的$this指向小物件執行個體而不是控制器執行個體。
在上一篇文章Yii Framework 開發簡明教程(8) 使用FormModel 說通過CController來處理使用者提交事件,和Windows 案頭應用或ASP.Net做個類比,Yii 中視圖View (HTML Form) 類似於WinForm或是Asp.Net 的Page。控制類Controller類似Windows案頭應用或Asp.Net的事件處理(Code- Behind)類。 嚴格上來說,把 Yii 中視圖View (HTML Form)比作Windows案頭中的WinFrom或是Asp.Net 的Page並不十分恰當, 實際上Yii 中視圖的整個HTML (或是body)對等於WinForm或是Page。 HTML Form 也只是CWidget的一個子類,對應到 CActiveForm UI組件,此外,Yii內建了下面CWidget類型:
其中CJuiWidget (封裝JQuery)和CInputWidget進一步分為:
後面的教程將逐個介紹Yii提供的UI小工具的用法,除了這些內建的UI小工具外,Yii也支援自訂UI小工具。
以上就是PHP開發架構Yii Framework教程(9) UI小工具Widget概述的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!