Zii 是 Yii 內建的高階元件庫,命名空間 zii.*、zii.widgets.*,在基礎 UI 元件之上封裝資料綁定、分頁排序、AJAX 互動等進階功能,大幅減少樣板代碼。
| 類別 | 元件 | 用途 |
|---|---|---|
| 資料展示 | CGridView | 表格視圖,支援分頁、排序、篩選、行內編輯、批次操作 |
| CListView | 列表視圖,自定義項目模板,支援分頁、排序、AJAX 更新 | |
| CDetailView | 單筆資料詳細檢視,屬性格式化、標籤自定義 | |
| 互動元件 | CAutoComplete | 自動完成輸入框 (基於 jQuery UI Autocomplete) |
| CJuiDatePicker | 日期選擇器 | |
| CJuiDialog | 模態/非模態對話框 | |
| CJuiTabs | 分頁籤介面 | |
| 拖放/排序 | CJuiDraggable | 可拖曳元素 |
| CJuiDroppable | 可放置區域 | |
| CJuiSortable | 可排序列表 | |
| CJuiSlider | 滑桿輸入 | |
| 其他 | CMenu, CBreadcrumbs, CJuiAccordion, CJuiButton, CJuiProgressBar, CJuiSelectable, CJuiResizable | 導航、手風琴、按鈕、進度條、可選取、可縮放 |
所有資料展示元件均透過 IDataProvider 介面獲取資料,三大實作:
criteria 條件、pagination、sort 完整支援。totalItemCount。
// Controller
public function actionAdmin() {
$dataProvider = new CActiveDataProvider('Post', [
'criteria' => [
'condition' => 'status=1',
'order' => 'create_time DESC',
'with' => ['author'],
],
'pagination' => ['pageSize' => 20],
]);
$this->render('admin', ['dataProvider' => $dataProvider]);
}
// View (admin.php)
$this->widget('zii.widgets.grid.CGridView', [
'dataProvider' => $dataProvider,
'columns' => [
'id',
'title',
['name' => 'author.name', 'header' => '作者'],
'create_time:datetime',
[
'class' => 'CButtonColumn',
'template' => '{view}{update}{delete}',
],
],
]);
CGridColumn 實現特殊渲染 (如圖片縮圖、狀態標籤、進度條)。'ajaxUpdate' => true (預開啟),配合 Yii::app()->clientScript->registerScript 處理載入狀態。enableAjaxValidation。EExcelView 擴展實現 GridView 資料匯出 Excel/CSV/PDF。接續章節將逐一深入講解各 Zii 元件實戰用法:
