SYSTEM238 / NOTES1 / Zend Framework1 / ZF1でCSVファイルをブラウザに出力する。

NOTES1 PROG1
ZF1でCSVファイルをブラウザに出力する。
Zend Framework1(ZF1)でCSVファイルをブラウザに出力する。

PHPスクリプト

class xxxxController extends Zend_Controller_Action
{
    public function xxxxAction()
    {
        //DBよりデータ取得。以下の戻り値を想定
        //  array(
        //      '0'=>array('col1'=>val1,'col2'=>val2,'col3'=>val3),
        //      '1'=>array('col1'=>val1,'col2'=>val2,'col3'=>val3),
        //      ...
        //  )
        $rows   = $getRows_xxxx(...);

        if ($rows == array()){
            // empty!!

        }else{
            $csvFName   = 'xxxx_'. date('YmdHis'). '.csv';
            $this->getResponse()
                ->setHeader('Content-disposition',  'attachment; filename="'. $csvFName. '"')
                ->setHeader('Content-type',         'test/x-csv')
                ->sendHeaders();

            //文字コード変換、'**...**'には適切な値をセットする
            mb_convert_variables('**EXPORT CHARSET**', '**APPS CHARSET**', $rows);

            foreach ($rows as $v){
                $this->getResponse()->appendBody('"'. $v['col1']. '",');
                $this->getResponse()->appendBody('"'. $v['col2']. '",');
                $this->getResponse()->appendBody('"'. self::eol2vtab($v['col3']). "\"\n");
            }
            $this->getResponse()->outputBody();
            die();
        }
    }
}

eol2vtab( )はPHPの小ネタ1を参照してください。