csv在cakephp中导出该文件时包含HTML

时间:2012-02-01 13:31:13

标签: cakephp

我正在尝试执行导出和导入CSV文件的功能。 我已成功导入文件,但在导出文件时,下载的CSV文件包含带有页眉,正文和页脚的HTML代码。我认为这来自default.ctp,不确定。

为什么以及从哪里自动嵌入代码?

<?php function export()
    {
            $fp = NULL;
            $results = NULL;
            $row = NULL;        
            $results = $this->Order->find('all',array('fields'=> array('Order.sku','Order.inventory')));
            $fp = fopen('php://output','w+');
            $filename = "results.csv"; 
            header('Content-type: application/csv');
            header('Content-Disposition: attachment;');
            fputcsv($fp,array(
            'sku',
            'inventory'
            ));
            $ctr = count($results);
            print($ctr);
            foreach($results as $row) 
            {
                fputcsv($fp,array(
                $row['Order']['sku'],
                $row['Order']['inventory']
                ));
            }
          fclose($fp);

    } ?>

3 个答案:

答案 0 :(得分:1)

您需要禁用布局渲染,将其粘贴在控制器操作中:

$this->autoRender = false;

Tehnichally,这不是执行CSV的正确方法,您应该创建CSV布局和视图,但如果它有效,请立即观看。

答案 1 :(得分:1)

这是一个简单的解决方案,要么创建包含必要标头的CSV布局,要么只使用内置的ajax布局:

$this->layout = 'ajax';

在你的控制器动作中。那应该为你解决。

答案 2 :(得分:0)

禁用控制器中的布局

<?php

$this->layout=null;

?>