php - 如何使用 Yii 1.1 框架通过 PHP 下载过滤后的 CSV 文件
问题描述
在您进一步阅读之前,如果我在这里复制,我想道歉。我已经四处寻找了很长一段时间,对于如何处理以下情况没有任何运气。由于我是一个新手程序员,整个事情变得更糟了。
情况
我从工作中的高级程序员那里得到了一项任务,即创建一个可以生成 CSV 文件的函数。我遇到了一些麻烦,但最终解决了。该函数(位于模型中)如下所示。
// The function below will return a CSV file.
public function convert2CSV(){
$data = $this->search()->rawData;
$fileOpener = fopen('php://output', 'w');
fputcsv($fileOpener, array(
'some code...'
), ';');
foreach ($data as $rows) {
fputcsv($fileOpener, $rows ';');
}
fclose($fileOpener);
}
到目前为止,一切都很好。现在我的任务是创建一个过滤器,该过滤器也将应用于 CSV 文件。我这是什么意思?好吧,我在网站上使用过滤器,然后导出 CSV 文件,它应该只下载过滤器的结果。到目前为止,无论我做什么,它都只是下载了它所能下载的所有内容,直到达到最大数量。
我试图通过使用 $_GET 以某种方式告诉上面的 CSV 函数只下载过滤后的结果来完成它。我一直在尝试在控制器中这样做,在调用模型的 CSV 函数的操作中。
public function actionExport2CSV() {
$a = new A();
$b = new B();
// This part will output the headers so that the file is downloaded rather than displayed
header('Content-type: text/csv');
header('Content-Disposition: attachment; filename=TestFile.csv');
// do not cache the file
header('Pragma: no-cache');
header('Expires: 0');
$a->convert2CSV(); {
if (isset($_GET['B'])) {
$b->attributes = $_GET['B'];
}
}
}
}
我很感激你能给我的任何帮助和/或解释。我当然更愿意了解我做错了什么,以便在未来学习更多并成为更好的程序员。
非常感谢你们的帮助。
亲切的问候。
解决方案
不用管大家。
我编辑了搜索功能,以便在创建 CSV 文件之前对其进行过滤。
推荐阅读
- reactjs - 将数据从客户端发送到服务器、JSON 和 TypeScript
- python - 虚拟变量减少未经调整的 R 平方
- impala - 在 Zeppelin Impala 输出表列中生成 HTML 链接?
- cypress - cy.request() TypeError [ERR_INVALID_CHAR]: 标头内容中的无效字符 ["cookie"]
- node.js - 当我尝试只设置一个对象的键时,为什么所有对象的键都设置为值?
- mongodb - MongoDB:更新集合的所有文档中的特定字段,给定一个只有目标字段和新值的特定数组
- git - 让 'git log' 忽略 0 次更改的提交
- android - 控制何时在 Google Play 商店上发布您的应用
- javascript - findIndex 返回未定义而不是数字
- javascript - 将 React 组件注入 html 页面