Yii框架擴展CGridView增加導出CSV功能的方法
本文實例講述了Yii框架擴展CGridView增加導出CSV功能的方法。分享給大家供大家參考,具體如下:
Yii提供的CGridView組件沒有內置數(shù)據(jù)導出功能,不過我們可以通過擴展該組件來添加該功能。
具體方法如下:
1、首先派生一個子類,添加一個action成員,在該視圖的init函數(shù)中判斷是瀏覽動作還是數(shù)據(jù)導出動作,如果是瀏覽動作者則保持默認行為,否則輸出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輸出函數(shù)中的header設置語句之前不要有任何的輸出,包括如下函數(shù):
print, echo, printf, trigger_error, vprintf, ob_flush, var_dump, readfile, passthru
否則內容只會在瀏覽器中輸出,但不會出現(xiàn)文件下載。
更多關于Yii相關內容感興趣的讀者可查看本站專題:《Yii框架入門及常用技巧總結》、《php優(yōu)秀開發(fā)框架總結》、《smarty模板入門基礎教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家基于Yii框架的PHP程序設計有所幫助。
- Yii中使用PHPExcel導出Excel的方法
- Yii2框架中使用PHPExcel導出Excel文件的示例
- Yii框架使用PHPExcel導出Excel文件的方法分析【改進版】
- Yii Framework框架使用PHPExcel組件的方法示例
- YII2框架中excel表格導出的方法詳解
- Yii安裝與使用Excel擴展的方法
- Yii2使用自帶的UploadedFile實現(xiàn)的文件上傳
- Yii配置文件用法詳解
- Yii2中YiiBase自動加載類、引用文件方法分析(autoload)
- Yii2實現(xiàn)UploadedFile上傳文件示例
- YII中Ueditor富文本編輯器文件和圖片上傳的配置圖文教程
- Yii框架中使用PHPExcel的方法分析
相關文章
關于php微信訂閱號開發(fā)之token驗證后自動發(fā)送消息給訂閱號但是沒有消息返回的問題
最近做了個項目,當token驗證之后,發(fā)送消息給訂閱號,但是沒有消息返回,下面小編通過本篇文章給大家分享我的解決辦法2015-12-12

