我正在构建一个在线应用程序以从多个(不相关的)数据集中选择变量,并为每个已选择的数据集构建输出 csv 文件(仅包含选定的变量,而不是所有可用的变量)。
它几乎可以正常工作,只是我最终只有一个 csv 文件,并且它只包含最后一个选定数据集的变量。
我正在尝试使用 $this->set 通过循环遍历所选数据集的数组(正确嵌套以允许轻松使用 foreach 循环)将数据传递到输出 ctp 视图。我可以理解为什么我最终只得到一个 csv,但是有没有人知道如何在 cakephp 中正确实现它?
这是用于生成 csv 文件的 ctp 视图。它适用于一个数据集。
<?php
ini_set('max_execution_time', 600); //increase max_execution_time to 10 min if data set is very large
//create a file
$filename = "export_".date("Y.m.d").".csv";
$csv_file = fopen('php://output', 'w');
header('Content-type: application/csv');
header('Content-Disposition: attachment; filename="'.$filename.'"');
//loop through data array passed by $this->set in controller
foreach ($end_values as $row)
{
fputcsv($csv_file,$row,',','"');
}
fclose($csv_file);
?>
我已更改 $filename 以包含对单个数据集的引用(现在仅使用会话变量)-因此对于每次传递,文件名都会不同:
$filename = "export_".$this->Session->read('dataset_tag')."_".date("Y.m.d").".csv";
但仍然遇到同样的问题 - 只创建了最终的数据集 csv..