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 相关文章推荐
PHP3 safe_mode 失效漏洞
Oct 09 PHP
晋城吧对DiscuzX进行的前端优化要点
Sep 05 PHP
php后门URL的防范
Nov 12 PHP
php 启动报错如何解决
Jan 17 PHP
PHP采用curl模仿用户登陆新浪微博发微博的方法
Nov 07 PHP
php实现向javascript传递数组的方法
Jul 27 PHP
PHP远程调试之XDEBUG
Dec 29 PHP
Laravel 5.5 的自定义验证对象/类示例代码详解
Aug 29 PHP
php处理抢购类功能的高并发请求
Feb 08 PHP
支持汉转拼和拼音分词的PHP中文工具类ChineseUtil
Feb 23 PHP
PHP实现生成推广海报的方法详解
Mar 14 PHP
分析php://output和php://stdout的区别
May 06 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或asp创建网页桌面快捷方式的代码
2010/03/23 PHP
解析php中两种缩放图片的函数,为图片添加水印
2013/06/14 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
2017/11/13 PHP
PHP实现网站应用微信登录功能详解
2019/04/11 PHP
javascript 图片上一张下一张链接效果代码
2010/03/12 Javascript
jQuery 位置函数offset,innerWidth,innerHeight,outerWidth,outerHeight,scrollTop,scrollLeft
2010/03/23 Javascript
JavaScript 中的日期和时间及表示标准介绍
2013/08/21 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
详解 javascript中offsetleft属性的用法
2015/11/11 Javascript
jQuery学习心得总结(必看篇)
2016/06/10 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
详解Webpack实战之构建 Electron 应用
2017/12/25 Javascript
微信小程序使用map组件实现路线规划功能示例
2019/01/22 Javascript
js实现小星星游戏
2020/03/23 Javascript
[05:42]DOTA2英雄梦之声_第10期_蝙蝠骑士
2014/06/21 DOTA
python实现多线程暴力破解登陆路由器功能代码分享
2015/01/04 Python
详解在Python程序中使用Cookie的教程
2015/04/30 Python
python使用udp实现聊天器功能
2018/12/10 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
python实现xml转json文件的示例代码
2020/12/30 Python
HTML5实现Notification API桌面通知功能
2016/03/02 HTML / CSS
Sneaker Studio捷克:购买运动鞋
2018/07/08 全球购物
伯克斯奥特莱斯:Burkes Outlet
2019/03/30 全球购物
HQhair美国/加拿大:英国化妆品、美容及美发产品商城
2019/04/15 全球购物
挑战杯创业计划书的写作指南
2014/01/07 职场文书
党员政治学习材料
2014/05/14 职场文书
党员个人公开承诺书
2014/08/29 职场文书
学生实习证明范文
2014/09/28 职场文书
公安机关正风肃纪剖析材料
2014/10/10 职场文书
2014年业务员工作总结范文
2014/11/17 职场文书
2015年党员创先争优承诺书
2015/01/22 职场文书
2019年关于小学生课外阅读情况的分析报告
2019/12/02 职场文书
Python利用folium实现地图可视化
2021/05/23 Python