对于 Yii2 框架的组件 Gridview 写一下简单示例

博客 · 本文由 · ITer · 发布于 1月前 · 233 阅读

基础

Gridview 插件被应用于数据呈现,它提供了很多功能,如浏览、排序、分页和数据过滤。

下面是一个简单的 Gridview 应用实例:

 <?= GridView::widget([
     'dataProvider' => $dataProvider,
     'columns' => [
         'id',
         'name',
         'created_at:datetime',
         // ...
     ],
 ]) ?>

用法示例

1.在例头添加排序,在cloumns中加入以下代码

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

2.列表勾选框,在cloumns中加入以下代码

['class' => 'yii\grid\CheckboxColumn'],

3.列数据快速格式化:时间戳转化为时间格式显示

'created_at:datetime',

4.显示关联表数据:前提是在model中有关联关系,例如:getAuthor()

'author.name', //获取关联表author的name的值

5.列表中显示图片:显示一张50*100的图片,label_img为图片地址

'label_img'=>[
    'label' => '标签图',
    'format' => [
        'image',
        [
            'height' =>50,
            'width' => 100
        ]
    ],
    'value' => function($model){
        return $model->label_img;
    }
],

6.显示状态,且带过滤

[
    'attribute' => 'is_valid',
    'label' => '发布状态',
    'value' => function($model) {
        return $model->is_valid == 0 ? '未发布' : '发布';
    },
    'filter' => [
        0 => '未发布',
        1 => '发布'
    ]
],

7.显示带html标签的例值:正常情况下是过滤html标签的

[
    'attribute' => 'content',
    'format' => 'raw',
    'value' => function ($model) { 
        return $model->content; 
    },

],

8.自定义按钮:{view} {update} {delete} 为默认,可以不填显示默认,也可以覆盖重新定义

[
    'class' => 'yii\grid\ActionColumn',
    'template' => '{test} {view} {update} {delete}',
    'header' => '操作',
    'buttons' => [
        'test' => function ($url, $model, $key) { 
            return Html::a('测试按钮', $url, ['data-method' => 'post','data-pjax'=>'0'] ); 
        },
        'delete'=> function ($url, $model, $key){
            return  Html::a('删除', ['delete', 'id'=>$model->id],[
                'data-method'=>'post',              //POST传值
                'data-confirm' => '确定删除该项?', //添加确认框
            ] ) ;
        }
    ],
],

9.修改列表顶部分页信息

//{begin}:当前列的第一个元素序号
//{end}:当前页的最后一个元素序号
//{count}:当前页的元素总数
//{totalCount}:所有元素总数
//{page}:当前页
//{pageCount}:总页数

<?= GridView::widget([
    'dataProvider' => $dataProvider,
    'summary' => '第{begin}-{end}页,共计{totalCount}篇文章',   
    ...

以上为gridview的一些基本操作,当然还有很多其他情景,但要活学活用,举一反三

评论数量:2

很全面

29天前 回复

很不错的教程,收藏了

29天前 回复