yii2-GridView在开发中常用的功能及技巧总结


Posted in PHP onJanuary 07, 2017

数据网格或者说 GridView 小部件是Yii中最强大的部件之一。它有一个属性名叫 dataProvider ,这个属性能够提供一个数据提供者的示例并且可以显示所提供的数据,即使用 yii\grid\GridView::columns 属性的一组列配置,在一个表格中渲染每一行数据。

例如,

use yii\helpers\Html;
use yii\grid\GridView;													  
<?= GridView::widget([
	'dataProvider' => $dataProvider,
	'filterModel' => $searchModel,
	'columns' => [
		['class' => 'yii\grid\SerialColumn'],
		'id',
]);?>

一、表格列

表格的列是通过 GridView 配置项中的 yii\grid\GridView::columns 属性配置的.

<?php
use yii\grid\GridView;
echo GridView::widget([
  'dataProvider' => $dataProvider,
  
  //表格列值搜索功能,注意一定要配合attribute才会显示
  //$searchModel = new ArticleSearch();
  'filterModel' => $searchModel,
  
  //重新定义分页样式
  'layout'=> '{items}<div class="text-right tooltip-demo">{pager}</div>',
  'pager'=>[
    //'options'=>['class'=>'hidden']//关闭分页
    'firstPageLabel'=>"First",
    'prevPageLabel'=>'Prev',
    'nextPageLabel'=>'Next',
    'lastPageLabel'=>'Last',
   ]
    
  'columns' => [
    ['class' => 'yii\grid\SerialColumn'],//序列号从1自增长
    
    // 数据提供者中所含数据所定义的简单的列
    // 使用的是模型的列的数据
    'id',
    'username',
    
    // 更复杂的列数据
    [
      'class' => 'yii\grid\DataColumn', //由于是默认类型,可以省略 
      'value' => function ($data) {
        return $data->name; 
        // 如果是数组数据则为 $data['name'] ,
        例如,使用 SqlDataProvider 的情形。
      },
    ],
    
    ['label'=>'标题','value' => 'title'],
    
    ['label'=>'文章内容','format' => 'html','value' => 'content'],
            
    [
      'label'=>'文章类别', 
      /*'attribute' => 'cid',产生一个a标签,点击可排序*/ 
      'value' => 'cate.cname' //关联表
    ],
    
    [
      //动作列yii\grid\ActionColumn 
      //用于显示一些动作按钮,如每一行的更新、删除操作。
     'class' => 'yii\grid\ActionColumn',
     'header' => '操作', 
     'template' => '{delete} {update}',//只需要展示删除和更新
     'headerOptions' => ['width' => '240'],
     'buttons' => [
      'delete' => function($url, $model, $key){
        return Html::a('<i class="fa fa-ban"></i> 删除',
          ['del', 'id' => $key], 
          [
           'class' => 'btn btn-default btn-xs',
           'data' => ['confirm' => '你确定要删除文章吗?',]
          ]
        );
       },           
      ],
     ],
    
  ],
]);
?>

1. 处理时间

数据列的主要配置项是 yii\grid\DataColumn::format 属性。它的值默认是使用 \yii\i18n\Formatter 应用组件。

[
 'label'=>'更新日期',
 'format' => ['date', 'php:Y-m-d'],
 'value' => 'updated_at'
],

//or
[
 //'attribute' => 'created_at',
 'label'=>'更新时间',
 'value'=>function($model){
    return date('Y-m-d H:i:s',$model->created_at);  
 },
 'headerOptions' => ['width' => '170'],
],

2. 处理图片

[
  'label'=>'封面图',
  'format'=>'raw',
  'value'=>function($m){
    return Html::img($m->cover,
          ['class' => 'img-circle',
          'width' => 30]
    );
  }
],

3. 数据列有链接

[
  'attribute' => 'title',
  'value' => function ($model, $key, $index, $column) {
      return Html::a($model->title, 
        ['article/view', 'id' => $key]);
  },
  'format' => 'raw',
],

4. 数据列显示枚举值(男/女)

[
  'attribute' => 'sex', 
  'value'=>function ($model,$key,$index,$column){
     return $model->sex==1?'男':'女';  
  },
  
  //在搜索条件(过滤条件)中使用下拉框来搜索
  'filter' => ['1'=>'男','0'=>'女'],
  //or
  'filter' => Html::activeDropDownList($searchModel,
        'sex',['1'=>'男','0'=>'女'],
        ['prompt'=>'全部']
   )
],
[
  'label'=>'产品状态', 
  'attribute' => 'pro_name', 
  'value' => function ($model) {
    $state = [
      '0' => '未发货',
      '1' => '已发货',
      '9' => '退货,已处理',
    ];
   return $state[$model->pro_name];
  },
  'headerOptions' => ['width' => '120'] 
]

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
利用js调用后台php进行数据处理原码
Oct 09 PHP
php下获取客户端ip地址的函数
Mar 15 PHP
php join函数应用
May 04 PHP
关于初学PHP时的知识积累总结
Jun 07 PHP
解析在apache里面给php写虚拟目录的详细方法
Jun 24 PHP
PHP 读取和编写 XML
Nov 19 PHP
php遍历目录方法小结
Mar 10 PHP
十大使用PHP框架的理由
Sep 26 PHP
基于Swoole实现PHP与websocket聊天室
Aug 03 PHP
Laravel 实现密码重置功能
Feb 23 PHP
laravel接管Dingo-api和默认的错误处理方式
Oct 25 PHP
php7中停止php-fpm服务的方法详解
May 09 PHP
yii2实现分页,带搜索的分页功能示例
Jan 07 #PHP
Yii框架用户登录session丢失问题解决方法
Jan 07 #PHP
Yii框架表单提交验证功能分析
Jan 07 #PHP
Yii框架弹出框功能示例
Jan 07 #PHP
Yii框架弹出窗口组件CJuiDialog用法分析
Jan 07 #PHP
PHP验证码类ValidateCode解析
Jan 07 #PHP
PHP缩略图生成和图片水印制作
Jan 07 #PHP
You might like
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
yii2利用自带UploadedFile实现上传图片的示例
2017/02/16 PHP
PHP使用文件锁解决高并发问题示例
2018/03/29 PHP
微信公众平台开发教程③ PHP实现微信公众号支付功能图文详解
2019/04/10 PHP
改变状态栏文字的js代码
2014/06/13 Javascript
javascript实现ecshop搜索框键盘上下键切换控制
2015/03/18 Javascript
JQuery判断checkbox是否选中及其它复选框操作方法合集
2015/06/01 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
学习javascript文件加载优化
2016/02/19 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
vue-ajax小封装实例
2017/09/18 Javascript
基于Vue的ajax公共方法(详解)
2018/01/20 Javascript
解决vue 单文件组件中样式加载问题
2019/04/24 Javascript
vuex+axios+element-ui实现页面请求loading操作示例
2020/02/02 Javascript
JS Generator 函数的含义与用法实例总结
2020/04/08 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
React倒计时功能实现代码——解耦通用
2020/09/18 Javascript
[03:17]2014DOTA2 国际邀请赛中国区预选赛 四强专访
2014/05/23 DOTA
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
Python入门之三角函数全解【收藏】
2017/11/08 Python
利用Python如何批量修改数据库执行Sql文件
2018/07/29 Python
python重试装饰器的简单实现方法
2019/01/31 Python
python+OpenCV实现车牌号码识别
2019/11/08 Python
Python3标准库之dbm UNIX键-值数据库问题
2020/03/24 Python
python自动打开浏览器下载zip并提取内容写入excel
2021/01/04 Python
BASIC HOUSE官方旗舰店:韩国著名的服装品牌
2018/09/27 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
.NET方向面试题
2014/11/20 面试题
项目合作计划书
2014/01/09 职场文书
毕业生自荐书
2014/02/03 职场文书
师范生自我鉴定
2014/03/20 职场文书
超市开店计划书
2014/09/15 职场文书
高考1977观后感
2015/06/04 职场文书
音乐之声观后感
2015/06/04 职场文书
CSS 制作波浪效果的思路
2021/05/18 HTML / CSS
AJAX实现指定部分页面刷新效果
2021/10/16 Javascript