首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

Yii CGridView 完整使用指南:資料顯示、欄位客製化、按鈕列與屬性詳解

     編輯:PHP 綜合知識

基本用法

<?php
use yii\grid\GridView;
use yii\data\ActiveDataProvider;

$dataProvider = new ActiveDataProvider([
    'query' => Post::find(),
    'pagination' => ['pageSize' => 20],
]);

echo GridView::widget([
    'dataProvider' => $dataProvider,
]);
?>

進階欄位配置

<?php
echo GridView::widget([
    'dataProvider' => $dataProvider,
    'columns' => [
        'title',                                    // 直接顯示屬性
        'category.name',                            // 關聯模型屬性
        'content:html',                             // 格式化輸出 (html/ntext/email/url/date/time/datetime)
        [
            'attribute' => 'create_time',
            'label' => '建立時間',
            'value' => function ($model) {
                return date('M j, Y', $model->create_time);
            },
            'format' => 'raw',
        ],
        [
            'label' => '作者',
            'value' => function ($model) {
                return $model->author->username;
            },
        ],
        [
            'class' => 'yii\grid\ActionColumn',     // 操作按鈕列
            'template' => '{view} {update} {delete}',
            'buttons' => [
                'view' => function ($url, $model) {
                    return Html::a('', $url);
                },
            ],
        ],
    ],
]);
?>

欄位設定完整選項

屬性說明範例
attribute模型屬性名 (用於排序/過濾)'title'
label欄位標題'文章標題'
value顯示內容:字串/匿名函式/閉包function($m){ return $m->name; }
format格式化:raw/html/text/ntext/email/url/date/time/datetime/boolean'html'
headerOptions表頭 <th> HTML 屬性['width' => '100px']
contentOptions儲存格 <td> HTML 屬性['class' => 'text-center']
filter過濾輸入框:true/false/字串/陣列['1'=>'啟用','0'=>'停用']
enableSorting是否啟用排序false
visible是否顯示Yii::$app->user->can('admin')

常用屬性總覽

屬性說明
dataProvider資料來源 (必填),實作 DataProviderInterface
filterModel搜尋模型,搭配 `filter` 屬性啟用欄位過濾
showHeader是否顯示表頭
showFooter是否顯示表尾
emptyText無資料時顯示文字
rowOptions每列 <tr> HTML 屬性,可為閉包 function($model, $key, $index)
beforeRow每列前插入內容閉包
afterRow每列後插入內容閉包
pager分頁器設定陣列
sorter排序連結設定

AJAX 分頁/排序

預設啟用 `ajaxUpdate` (容器 ID)。若需關閉:`'ajaxUpdate' => false`。自訂容器:`'id' => 'my-grid'`。

匯出功能擴充

搭配 `kartik-v/yii2-grid` 擴充套件可一鍵匯出 Excel/CSV/PDF:

<?php
use kartik\grid\GridView;

echo GridView::widget([
    'dataProvider' => $dataProvider,
    'export' => [
        'fontAwesome' => true,
        'showConfirmAlert' => false,
        'target' => GridView::TARGET_BLANK,
    ],
    'exportConfig' => [
        GridView::EXCEL => ['label' => 'Excel', 'icon' => 'file-excel-o'],
        GridView::CSV => ['label' => 'CSV', 'icon' => 'file-text-o'],
        GridView::PDF => ['label' => 'PDF', 'icon' => 'file-pdf-o'],
    ],
]);
?>
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved