如何设置contextSwitch以生成csv文件

时间:2011-08-25 10:14:42

标签: zend-framework

在我的控制器init方法中,我有这个

public function init()
{
    //initialise the context switch action helper
    $this->_helper->getHelper('contextSwitch')
                  ->addContext('csv', array('suffix' => 'csv',
                                            'headers' => array(
                                                'Context-Type' => 'application/csv',
                                                'Context-Disposition' => 'inline; filename="fooo.csv"',
                                                'Pragma' => 'no-cache',
                                                'Expires' => '0',
                                            )))
                  ->addActionContext('stockreport', 'csv')
                  ->initContext();
}

在我的stockreportAction中,我已按如下方式禁用了布局和视图渲染。

public function stockreportAction()
{
    $this->_helper->layout->disableLayout();
    $this->_helper->viewRenderer->setNoRender();

    echo 'foobar';
}

当我调用此文件时,我得到一个空白页面,我想生成这个,所以在示例中'foobar'显示为可下载的csv文件。任何人都可以提供建议

1 个答案:

答案 0 :(得分:-3)

Zend_Magic尚未实施。

您有责任生成csv或任何其他输出格式。

简而言之:上下文切换器修改视图脚本后缀,因此您的上下文的查看脚本是stockreport.csv.phtml(如果csv上下文处于活动状态,否则为stockreport.phtml)。
但是在您的示例上下文切换器中以错误的方式使用。你不要在这里切换上下文 您不使用视图脚本,也不检查操作中的上下文是否处于活动状态。

为什么你的输出是空的是一个不同的问题 - 可能在某些时候你清除了Response对象中的内容,或者某处是致命错误&错误输出已禁用。

<强>更新
标题也是Content-TypeContent-Disposition