我正在尝试执行导出和导入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);
} ?>
答案 0 :(得分:1)
您需要禁用布局渲染,将其粘贴在控制器操作中:
$this->autoRender = false;
Tehnichally,这不是执行CSV的正确方法,您应该创建CSV布局和视图,但如果它有效,请立即观看。
答案 1 :(得分:1)
这是一个简单的解决方案,要么创建包含必要标头的CSV布局,要么只使用内置的ajax布局:
$this->layout = 'ajax';
在你的控制器动作中。那应该为你解决。
答案 2 :(得分:0)
禁用控制器中的布局
<?php
$this->layout=null;
?>