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 相关文章推荐
PHP生成便于打印的网页
Oct 09 PHP
php 三维饼图的实现代码
Sep 28 PHP
php采集时被封ip的解决方法
Aug 29 PHP
php中mysql连接和基本操作代码(快速测试使用,简单方便)
Apr 25 PHP
PHP取余函数介绍MOD(x,y)与x%y
May 15 PHP
php实现对两个数组进行减法操作的方法
Apr 17 PHP
PHP正则表达式入门教程(推荐)
May 18 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
Nov 05 PHP
PHP编程求最大公约数与最小公倍数的方法示例
May 29 PHP
详解PHP素材图片上传、下载功能
Apr 12 PHP
PHP goto语句用法实例
Aug 06 PHP
tp5递归 无限级分类详解
Oct 18 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
修改Zend引擎实现PHP源码加密的原理及实践
2008/04/14 PHP
PHP脚本监控Nginx 502错误并自动重启php-fpm
2015/05/13 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
使用laravel和ajax实现整个页面无刷新的操作方法
2019/10/03 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
js改变文章字体大小的实例代码
2013/11/27 Javascript
jquery做的一个简单的屏幕锁定提示框
2014/03/26 Javascript
JS判断是否360安全浏览器极速内核的方法
2015/01/29 Javascript
NodeJs读取JSON文件格式化时的注意事项
2016/09/25 NodeJs
Javascript循环删除数组中元素的几种方法示例
2017/05/18 Javascript
JS中获取 DOM 元素的绝对位置实例详解
2018/04/23 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
微信小程序云开发如何使用npm安装依赖
2019/05/18 Javascript
EXTJS7实现点击拖拉选择文本
2020/12/17 Javascript
[01:35:53]完美世界DOTA2联赛PWL S3 Magma vs GXR 第二场 12.13
2020/12/17 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
Python处理时间日期坐标轴过程详解
2019/06/25 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
python 爬取古诗文存入mysql数据库的方法
2020/01/08 Python
Python多线程的退出控制实现
2020/08/10 Python
使用Python提取文本中含有特定字符串的方法示例
2020/12/09 Python
药物学专业学生的自我评价
2013/10/27 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
五型班组建设方案
2014/02/10 职场文书
“学雷锋活动月”总结
2014/03/09 职场文书
会议主持词
2014/03/17 职场文书
安全标兵事迹材料
2014/08/17 职场文书
六查六看个人剖析材料
2014/10/14 职场文书
英文慰问信范文
2015/03/24 职场文书
楚门的世界观后感
2015/06/03 职场文书
导游词之南京中山陵
2019/11/27 职场文书
idea编译器vue缩进报错问题场景分析
2021/07/04 Vue.js
日元符号 ¥
2022/02/17 杂记
Android Flutter实现3D动画效果示例详解
2022/04/07 Java/Android