全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Yii框架扩展CGridView增加导出CSV功能的方法

本文实例讲述了Yii框架扩展CGridView增加导出CSV功能的方法。分享给大家供大家参考,具体如下:

Yii提供的CGridView组件没有内置数据导出功能,不过我们可以通过扩展该组件来添加该功能。

具体方法如下:

1、首先派生一个子类,添加一个action成员,在该视图的init函数中判断是浏览动作还是数据导出动作,如果是浏览动作者则保持默认行为,否则输出csv文件。

public function init()
{
  if($this->action == 'export')
  {
    parent::init();
    $this->genCsv();
  }
  else
  {
    parent::init();
  }
}

2、处理csv文件的输出:

protected function genCsv()
{
  header("Content-Type: text/csv; charset=GB2312");
  header('Content-Disposition: attachment; filename="'.$this->fileName.'"');
  //add your content dump codes here
  flush();
}

3、然后在表格控件界面上添加一个csv导出按钮

覆盖其renderItems()方法如下:

public function renderItems()
{
  if(Yii::app()->user->checkAccess('administrator'))
  {
    echo '<div class="toolBar">';
    echo '<form action="'.CHtml::normalizeUrl(array($this->action)).'&id='.$this->id.'" method="post">';
    foreach($this->getController()->getActionParams() as $name => $value)
    {
      echo '<input type="hidden" name="'.addcslashes($name,'"').'" value="'.addcslashes($value,'"').'" />';
    }
    echo '<input type="image" title="'.Yii::t('ifCMS','Export to CSV').'" src="'.Yii::app()->theme->BaseUrl.'/images/ico-csv.png" alt="Submit">';
    echo '</form>';
    echo '</div>';
  }
  parent::renderItems();
}

4、然后在点击CSV的动作处理比如actionCsv()中render单个表格视图,模板如下

<?php
  $this->widget('application.extensions.grid.MyGridView', array(
  'id'=>'grid',
  'action'=>'export',
  'dataProvider'=>$dp,
  'columns'=>array(
    array(
      'header'=>Yii::t('Statistics','Phone'),
      'name'=>'phone',
    ),
    array(
      'header'=>Yii::t('Statistics','Count'),
      'name'=>'count',
    ),
  )
));?>

注意上述第2步csv输出函数中的header设置语句之前不要有任何的输出,包括如下函数:

print, echo, printf, trigger_error, vprintf, ob_flush, var_dump, readfile, passthru

否则内容只会在浏览器中输出,但不会出现文件下载。

更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。


# Yii  # 扩展  # CGridView  # 增加  # 导出  # CSV  # Yii中使用PHPExcel导出Excel的方法  # Yii2框架中使用PHPExcel导出Excel文件的示例  # Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】  # Yii Framework框架使用PHPExcel组件的方法示例  # YII2框架中excel表格导出的方法详解  # Yii安装与使用Excel扩展的方法  # Yii2使用自带的UploadedFile实现的文件上传  # Yii配置文件用法详解  # Yii2中YiiBase自动加载类、引用文件方法分析(autoload)  # Yii2实现UploadedFile上传文件示例  # YII中Ueditor富文本编辑器文件和图片上传的配置图文教程  # Yii框架中使用PHPExcel的方法分析  # 程序设计  # 方法如下  # 相关内容  # 子类  # 会在  # 感兴趣  # 我们可以  # 给大家  # 更多关于  # 所述  # 面向对象  # 有任何  # 操作技巧  # 器中  # 讲述了  # code  # dump  # br  # codes  # flush 


相关文章: 家庭服务器如何搭建个人网站?  建站主机是否等同于虚拟主机?  怀化网站制作公司,怀化新生儿上户网上办理流程?  定制建站策划方案_专业建站与网站建设方案一站式指南  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  如何在新浪SAE免费搭建个人博客?  如何通过FTP服务器快速搭建网站?  济南企业网站制作公司,济南社保单位网上缴费步骤?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  网站制作外包价格怎么算,招聘网站上写的“外包”是什么意思?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  名字制作网站免费,所有小说网站的名字?  如何续费美橙建站之星域名及服务?  内网网站制作软件,内网的网站如何发布到外网?  如何快速搭建虚拟主机网站?新手必看指南  建站之星安装需要哪些步骤及注意事项?  上海网站制作开发公司,上海买房比较好的网站有哪些?  建站之星如何防范黑客攻击与数据泄露?  Swift中循环语句中的转移语句 break 和 continue  网站制作难吗安全吗,做一个网站需要多久时间?  如何正确选择百度移动适配建站域名?  如何通过远程VPS快速搭建个人网站?  如何快速生成ASP一键建站模板并优化安全性?  如何选择适合PHP云建站的开源框架?  ,怎么用自己头像做动态表情包?  网站建设制作、微信公众号,公明人民医院怎么在网上预约?  C#如何在一个XML文件中查找并替换文本内容  如何选择CMS系统实现快速建站与SEO优化?  微信小程序 五星评分(包括半颗星评分)实例代码  寿县云建站:智能SEO优化与多行业模板快速上线指南  香港服务器WordPress建站指南:SEO优化与高效部署策略  建站主机与服务器功能差异如何区分?  建站主机助手选型指南:2025年热门推荐与高效部署技巧  如何用免费手机建站系统零基础打造专业网站?  制作网站建设的公司有哪些,网站建设比较好的公司都有哪些?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  存储型VPS适合搭建中小型网站吗?  制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?  深圳 网站制作,深圳招聘网站哪个比较好一点啊?  实例解析angularjs的filter过滤器  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  小自动建站系统:AI智能生成+拖拽模板,多端适配一键搭建  宝塔建站后网页无法访问如何解决?  网站企业制作流程,用什么语言做企业网站比较好?  建站之星安装步骤有哪些常见问题?  独立制作一个网站多少钱,建立网站需要花多少钱?  如何快速查询网址的建站时间与历史轨迹?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。