這篇文章主要介紹Yii框架擴(kuò)展CGridView如何增加導(dǎo)出CSV功能,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)企業(yè)建站,十年網(wǎng)站建設(shè)經(jīng)驗(yàn),專注于網(wǎng)站建設(shè)技術(shù),精于網(wǎng)頁(yè)設(shè)計(jì),有多年建站和網(wǎng)站代運(yùn)營(yíng)經(jīng)驗(yàn),設(shè)計(jì)師為客戶打造網(wǎng)絡(luò)企業(yè)風(fēng)格,提供周到的建站售前咨詢和貼心的售后服務(wù)。對(duì)于成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作中不同領(lǐng)域進(jìn)行深入了解和探索,創(chuàng)新互聯(lián)在網(wǎng)站建設(shè)中充分了解客戶行業(yè)的需求,以靈動(dòng)的思維在網(wǎng)頁(yè)中充分展現(xiàn),通過(guò)對(duì)客戶行業(yè)精準(zhǔn)市場(chǎng)調(diào)研,為客戶提供的解決方案。具體如下:
Yii提供的CGridView組件沒(méi)有內(nèi)置數(shù)據(jù)導(dǎo)出功能,不過(guò)我們可以通過(guò)擴(kuò)展該組件來(lái)添加該功能。
具體方法如下:
1、首先派生一個(gè)子類,添加一個(gè)action成員,在該視圖的init函數(shù)中判斷是瀏覽動(dòng)作還是數(shù)據(jù)導(dǎo)出動(dòng)作,如果是瀏覽動(dòng)作者則保持默認(rèn)行為,否則輸出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、然后在表格控件界面上添加一個(gè)csv導(dǎo)出按鈕
覆蓋其renderItems()
方法如下:
public function renderItems() { if(Yii::app()->user->checkAccess('administrator')) { echo ''; echo ''; echo ''; } parent::renderItems(); }
4、然后在點(diǎn)擊CSV的動(dòng)作處理比如actionCsv()
中render單個(gè)表格視圖,模板如下
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è)置語(yǔ)句之前不要有任何的輸出,包括如下函數(shù):
print
,echo
,printf
,trigger_error
,vprintf
,ob_flush
,var_dump
,readfile
,passthru
否則內(nèi)容只會(huì)在瀏覽器中輸出,但不會(huì)出現(xiàn)文件下載。
以上是“Yii框架擴(kuò)展CGridView如何增加導(dǎo)出CSV功能”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!