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 相关文章推荐
在Windows版的PHP中使用ADO
Oct 09 PHP
Discuz板块横排显示图片的实现方法
May 28 PHP
php利用header函数实现文件下载时直接提示保存
Nov 12 PHP
PHP 提取图片img标记中的任意属性的简单实例
Dec 10 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
php实现的返回数据格式化类实例
Sep 22 PHP
php 使用array函数实现分页
Feb 13 PHP
详解WordPress开发中用于获取分类及子页面的函数用法
Jan 08 PHP
PHP中使用OpenSSL生成证书及加密解密
Feb 05 PHP
php+mysql+jquery实现简易的检索自动补全提示功能
Apr 15 PHP
php数组和链表的区别总结
Sep 20 PHP
laravel框架实现去掉URL中index.php的方法
Oct 12 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中去除换行解决办法小结(PHP_EOL)
2011/11/27 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
php实现的微信红包算法分析(非官方)
2015/09/25 PHP
PHP判断用户是否已经登录(跳转到不同页面或者执行不同动作)
2016/09/22 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
用js 让图片在 div或dl里 居中,底部对齐
2008/01/21 Javascript
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
dreamweaver 安装Jquery智能提示
2011/04/02 Javascript
javascript实现瀑布流自适应遇到的问题及解决方案
2015/01/28 Javascript
JavaScript中逗号运算符介绍及使用示例
2015/03/13 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
jQuery post数据至ashx实例详解
2016/11/18 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
layUI实现列表查询功能
2019/07/27 Javascript
vue实现吸顶、锚点和滚动高亮按钮效果
2019/10/21 Javascript
es6数组的flat(),flatMap()函数用法实例分析
2020/04/18 Javascript
基于javascript的无缝滚动动画实现2
2020/08/07 Javascript
VUE+Element实现增删改查的示例源码
2020/11/23 Vue.js
Python 列表排序方法reverse、sort、sorted详解
2016/01/22 Python
python与C互相调用的方法详解
2017/07/14 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
HTML5 本地存储和内容按需加载的思路和方法
2011/04/07 HTML / CSS
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
工程业务员工作职责
2013/12/07 职场文书
小学教师师德演讲稿
2014/05/06 职场文书
个人授权委托书范文
2014/09/21 职场文书
2014年财务工作自我评价
2014/09/23 职场文书
单身申明具结书
2015/02/26 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
党员发展大会主持词
2015/07/03 职场文书
公司晚会主持词
2019/04/17 职场文书
银行求职信范文
2019/05/13 职场文书
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
《进击的巨人》新联动CM 兵长强势出击兽巨人
2022/04/05 日漫