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

2025-05-27 0 99

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

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

具体方法如下:

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

?

1

2

3

4

5

6

7

8

9

10

11

12
public function init()

{

if($this->action == 'export')

{

parent::init();

$this->genCsv();

}

else

{

parent::init();

}

}

2、处理csv文件的输出:

?

1

2

3

4

5

6

7
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()方法如下:

  1. publicfunctionrenderItems()
  2. {
  3. if(Yii::app()->user->checkAccess('administrator'))
  4. {
  5. echo'<divclass="toolBar">';
  6. echo'<formaction="'.CHtml::normalizeUrl(array($this->action)).'&id='.$this->id.'"method="post">';
  7. foreach($this->getController()->getActionParams()as$name=>$value)
  8. {
  9. echo'<inputtype="hidden"name="'.addcslashes($name,'"').'"value="'.addcslashes($value,'"').'"/>';
  10. }
  11. echo'<inputtype="image"title="'.Yii::t('ifCMS','ExporttoCSV').'"src="'.Yii::app()->theme->BaseUrl.'/images/ico-csv.png"alt="Submit">';
  12. echo'</form>';
  13. echo'</div>';
  14. }
  15. parent::renderItems();
  16. }

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16
<?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框架的PHP程序设计有所帮助。

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 Yii框架扩展CGridView增加导出CSV功能的方法 https://www.kuaiidc.com/72363.html

相关文章

发表评论
暂无评论