Yiiフレームワーク拡張CGridViewはCSV機能を導出する方法を追加する
3096 ワード
この例では、Yiiフレームワーク拡張CGridViewがCSV機能の導出を増やす方法について説明する.皆さんに参考にしてあげます.具体的には以下の通りです.
Yiiが提供するCGridViewコンポーネントにはデータエクスポート機能が内蔵されていませんが、このコンポーネントを拡張することで追加できます.
具体的な方法は以下の通りです.
1、まずサブクラスを派生し、actionメンバーを追加し、そのビューのinit関数でブラウズ動作かデータエクスポート動作かを判断し、ブラウズ作成者であればデフォルト動作を維持し、そうでなければcsvファイルを出力する.
そうでなければ、コンテンツはブラウザでのみ出力されますが、ファイルのダウンロードは表示されません.
Yiiの関連内容についてもっと興味のある読者は、「Yiiフレームワーク入門及び常用技術総括」、「php優秀開発フレームワーク総括」、「smartyテンプレート入門基礎教程」、「phpオブジェクト向けプログラム設計入門教程」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門教程」及び「php一般データベース操作テクニック要約」
本稿では,Yiiフレームワークに基づくPHPプログラムの設計に役立つことを期待する.
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 '';
echo '';
echo '';
}
parent::renderItems();
}
4、次にCSVをクリックする動作処理、例えばactionCsv()
においてrender単一テーブルビュー、テンプレートは以下の通りである.
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出力関数のヘッダー設定文には、次の関数を含む出力はありません.print
, echo
, printf
, trigger_error
, vprintf
, ob_flush
, var_dump
, readfile
, passthru
そうでなければ、コンテンツはブラウザでのみ出力されますが、ファイルのダウンロードは表示されません.
Yiiの関連内容についてもっと興味のある読者は、「Yiiフレームワーク入門及び常用技術総括」、「php優秀開発フレームワーク総括」、「smartyテンプレート入門基礎教程」、「phpオブジェクト向けプログラム設計入門教程」、「php文字列(string)用法総括」、「php+mysqlデータベース操作入門教程」及び「php一般データベース操作テクニック要約」
本稿では,Yiiフレームワークに基づくPHPプログラムの設計に役立つことを期待する.