GridView组件——Yii2框架(Ⅴ)

0x00 简介

GridView应该是Yii2中最好用的表格了,支持各种功能。


预览图如上。

0x01 样例

图片对应的代码如下 Controller:

public function actionIndex()
{
    $searchModel = new BooksSearch();
    $dataProvider = $searchModel->search(Yii::$app->request->queryParams);

    return $this->render('index', [
        'searchModel' => $searchModel,
        'dataProvider' => $dataProvider,
    ]);
}

View:

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'filterModel' => $searchModel,
    'columns' => [
        ['class' => 'yii\grid\SerialColumn'],
        'bookid',
        'bookname',
        'author',
        'publishing',
        'categoryid',
        [
            'label'=>'类别',
           // 'attribute'=>'categoryid',
            'value'=>'category.category',  
        ],
         'price',
        [
            'header' => '操作',
            'class' => 'yii\grid\ActionColumn',
            'template' => '{view}{update}{borrow}',
            'buttons' => [
                'borrow' => function ($url, $model) {
                    return Html::a('<span class="glyphicon glyphicon-saved"></span>', $url, [
                        'title' => '借阅',
                        'data-method' => 'post',
                        'data-pjax' => '0',
                    ]);
                },
            ],
        ],
    ],
]);
?>
0x02 说明

样例中使用了CRUD生成。对之外的部分说明如下:

['class' => 'yii\grid\SerialColumn']  

↑序号列

[
        'label'=>'类别',
       // 'attribute'=>'categoryid',
        'value'=>'category.category',  
 ],

↑自定义列,可使用自定义function返回value。

操作的添加可直接参照样例button。
按钮样式可参考
http://v3.bootcss.com/components/#nav
参考如下:

'buttons' => [
     'loss' => function ($url, $model) {
       return Html::a('<span class="glyphicon glyphicon-remove-sign"></span>', $url, [
        'title' => '图书挂失',
         'data-method' => 'post',
         'data-pjax' => '0',
                 ]);     },

多表关联:

 'value'=>'category.category', 

在Books模板中加入

public function getCategory(){
    return $this->hasOne(Category::classname(),['categoryid'=>'categoryid']);
}

列表内容超链接:
参考如下:

[
            'attribute'=>'bookid',
            'format'=>'raw',
            'value' => function($dataProvider){
                $url = "index.php?r=books/view&id=".$dataProvider['bookid'];
                return Html::a($dataProvider['bookid'], $url, ['title' => '详细信息']);

            }
        ],

参考文档:
1.yii2-GridView在开发中常用的功能及技巧
2.YII2 GridView多表关联显示--查询--搜索

xmsec

继续阅读此作者的更多文章