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 相关文章推荐
给多个地址发邮件的类
Oct 09 PHP
vBulletin HACK----显示话题大小和打开新窗口于论坛索引页
Oct 09 PHP
PHP安全配置
Dec 06 PHP
通过PHP修改Linux或Unix口令的方法分享
Jan 30 PHP
php var_export与var_dump 输出的不同
Aug 09 PHP
php生成圆角图片的方法
Apr 07 PHP
详解PHP中的PDO类
Jul 06 PHP
php设计模式之委托模式
Feb 13 PHP
php实现带读写分离功能的MySQL类完整实例
Jul 28 PHP
thinkphp3.2.3版本的数据库增删改查实现代码
Sep 22 PHP
PHP自定义函数获取汉字首字母的方法
Dec 01 PHP
PHP实现文件上传功能实例代码
May 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
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
Wordpress php 分页代码
2009/10/21 PHP
ThinkPHP让分页保持搜索状态的方法
2014/07/02 PHP
PHP连接sql server 2005环境配置及问题解决
2014/08/08 PHP
用PHP写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
php连接微软MSSQL(sql server)完全攻略
2016/11/27 PHP
phpstorm激活码2020附使用详细教程
2020/09/25 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
javascript 一些用法小结
2009/09/11 Javascript
javascript 冒泡排序 正序和倒序实现代码
2010/12/14 Javascript
jquery实现微博文字输入框 输入时显示输入字数 效果实现
2013/07/12 Javascript
jQuery ui 利用 datepicker插件实现开始日期(minDate)和结束日期(maxDate)
2014/05/22 Javascript
JavaScript中使用Object.create()创建对象介绍
2014/12/30 Javascript
jQuery中:file选择器用法实例
2015/01/04 Javascript
调试JavaScript中正则表达式中遇到的问题
2015/01/27 Javascript
jQuery+html5实现div弹出层并遮罩背景
2015/04/15 Javascript
全屏js头像上传插件源码高清版
2016/03/29 Javascript
理解JavaScript原型链
2016/10/25 Javascript
JS判断Android、iOS或浏览器的多种方法(四种方法)
2017/06/29 Javascript
基于layui的table插件进行复选框联动功能的实现方法
2019/09/19 Javascript
jQuery 淡入/淡出效果函数用法分析
2020/05/19 jQuery
关于Vue中$refs的探索浅析
2020/11/05 Javascript
python计算列表内各元素的个数实例
2018/06/29 Python
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python 两个数据库postgresql对比
2019/10/21 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
解决python Jupyter不能导入外部包问题
2020/04/15 Python
Pytorch使用PIL和Numpy将单张图片转为Pytorch张量方式
2020/05/25 Python
购买大码女装:Lane Bryant
2016/09/07 全球购物
大三学生入党思想汇报
2014/01/02 职场文书
新学期国旗下演讲稿
2014/05/08 职场文书
政府领导干部个人对照检查材料思想汇报
2014/09/24 职场文书
导游词之苏州阳澄湖
2019/11/15 职场文书
python munch库的使用解析
2021/05/25 Python
CentOS 7安装mysql5.7使用XtraBackUp备份工具命令详解
2022/04/12 MySQL
Windows11 Insider Preview Build 25206今日发布 更新内容汇总
2022/09/23 数码科技