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

发布时间 - 2026-01-10 22:22:13    点击率:

数据网格或者说 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'] 
]

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


# yii2  # gridview  # 样式  # gridview操作  # Yii中CArrayDataProvider和CActiveDataProvider区别实例分析  # 浅析Yii2中GridView常见操作  # yii2.0之GridView自定义按钮和链接用法  # Yii2 GridView实现列表页直接修改数据的方法  # 浅析Yii2 gridview实现批量删除教程  # 浅析Yii2 GridView实现下拉搜索教程  # 浅析Yii2 GridView 日期格式化并实现日期可搜索教程  # yii2使用GridView实现数据全选及批量删除按钮示例  # yii2中结合gridview如何使用modal弹窗实例代码详解  # yii2使用gridView实现下拉列表筛选数据  # Yii2.0小部件GridView(两表联查/搜索/分页)功能的实现代码  # YII2框架中ActiveDataProvider与GridView的配合使用操作示例  # 分页  # 的是  # 更新时间  # 才会  # 只需要  # 或者说  # 所提供  # 提供一个  # 则为  # 大家多多  # 搜索功能  # 所含  # 有一个  # 下拉框  # div  # items  # demo  # tooltip  # text  # layout 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: IOS倒计时设置UIButton标题title的抖动问题  晋江文学城电脑版官网 晋江文学城网页版直接进入  原生JS实现图片轮播切换效果  如何在云虚拟主机上快速搭建个人网站?  使用Dockerfile构建java web环境  Java解压缩zip - 解压缩多个文件或文件夹实例  如何基于云服务器快速搭建个人网站?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Android Socket接口实现即时通讯实例代码  Laravel如何实现文件上传和存储?(本地与S3配置)  中山网站制作网页,中山新生登记系统登记流程?  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  linux top下的 minerd 木马清除方法  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  Laravel如何使用Blade模板引擎?(完整语法和示例)  如何在云主机快速搭建网站站点?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel怎么调用外部API_Laravel Http Client客户端使用  免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?  Laravel如何实现本地化和多语言支持_Laravel多语言配置与翻译文件管理  如何做网站制作流程,*游戏网站怎么搭建?  Laravel辅助函数有哪些_Laravel Helpers常用助手函数大全  Python文本处理实践_日志清洗解析【指导】  原生JS获取元素集合的子元素宽度实例  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  Laravel集合Collection怎么用_Laravel集合常用函数详解  如何生成腾讯云建站专用兑换码?  手机钓鱼网站怎么制作视频,怎样拦截钓鱼网站。怎么办?  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Laravel怎么在Blade中安全地输出原始HTML内容  javascript基本数据类型及类型检测常用方法小结  JS去除重复并统计数量的实现方法  深入理解Android中的xmlns:tools属性  Laravel怎么使用artisan命令缓存配置和视图  Laravel怎么配置.env环境变量_Laravel生产环境敏感数据保护与读取【方法】  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何在IIS中新建站点并配置端口与物理路径?  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  微信小程序 canvas开发实例及注意事项  高端云建站费用究竟需要多少预算?  制作公司内部网站有哪些,内网如何建网站?  Laravel Vite是做什么的_Laravel前端资源打包工具Vite配置与使用  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?