【发布时间】:2017-12-19 15:48:55
【问题描述】:
我正在为我的公司构建一个搜索功能,作为其中的一部分,管理团队可以使用我制作的搜索表单生成搜索,这是一个将各种术语发送到控制器方法 execute_search 的视图,这个通过我的Search_model 从数据库中获取结果并将它们输出到视图中。作为其中的一部分,我有一个“下载”按钮,我想将结果导出到 CSV。我做了一个控制器功能:
function convert_to_csv($results)
{
/** open raw memory as file, no need for temp files */
$temp_memory = fopen('php://memory', 'w');
/** loop through array */
foreach ($results as $line) {
/** default php csv handler **/
fputcsv($temp_memory, $line);
}
/** rewrind the "file" with the csv lines **/
fseek($temp_memory, 0);
/** modify header to be downloadable csv file **/
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="Statistics_system_report.csv";');
/** Send file to browser for download */
fpassthru($temp_memory);
}
我在下载的 CSV 文件中遇到错误,指出 $results 未定义。
我的问题是将结果发送到此函数但仅在我的用户单击下载按钮时才执行该函数的最佳方式是什么?我试过这个:
$this->convert_to_csv($results);
作为我的execute_search 函数的一部分,但是每次执行搜索时都会下载它,任何指向正确方向的指针都会很棒。
【问题讨论】:
-
在你调用方法之前你检查过
$result是什么,即这个调用$this->convert_to_csv($results); -
是的,它是来自模型的多维数组
$query->get()->result_array();
标签: php codeigniter csv