如何使用Yii 1.1框架使用PHP下载经过过滤的CSV文件

如何使用Yii 1.1框架使用PHP下载经过过滤的CSV文件,php,csv,yii,yii1.x,Php,Csv,Yii,Yii1.x,在你进一步阅读之前,如果我在这里复制,我想道歉。我已经四处寻找了很长一段时间,对于如何处理下面的情况,我一点运气都没有。由于我是一名程序员新手,整个事情变得越来越糟 形势 我从我的高级程序员那里得到一个任务,创建一个函数,生成一个CSV文件。我遇到了一些麻烦,但最终还是解决了。函数(位于模型中)如下所示 // The function below will return a CSV file. public function convert2CSV(){ $data = $this

在你进一步阅读之前,如果我在这里复制,我想道歉。我已经四处寻找了很长一段时间,对于如何处理下面的情况,我一点运气都没有。由于我是一名程序员新手,整个事情变得越来越糟

形势

我从我的高级程序员那里得到一个任务,创建一个函数,生成一个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文件。我这是什么意思?嗯,wenn我在网站中使用过滤器,然后导出CSV文件。它应该只下载过滤器的结果。到目前为止,无论我做了什么,它只是下载了它能下载的所有东西,直到达到最大数量

我试图通过使用$\u 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'];
            }
    }
  }
}
我感谢您能给我的任何帮助和/或解释。当然,我更愿意理解我做错了什么,以便在将来学习更多,成为一名更好的程序员

非常感谢你们的帮助

亲切问候。

我使用扩展名,非常有用

  • /protected/extensions/
  • 将其添加到
    /protected/config/main.php
    文件中,如下所示
  • “导入”=>数组(
    '应用程序模型。*',
    “app.portlets.*”,
    '应用程序组件。*',
    '应用程序扩展。*',
    ...
    “ext.phpexcel.*”,#这里我们导入扩展
    ),
    
  • 在要下载CSV文件的视图中添加并优化代码,如下所示:
  • $this->widget('EExcelView',数组(
    'dataProvider'=>$model->search(),
    “创建者”=>Yii::app()->名称,
    “网格模式”=>“网格”,
    “标题”=>“CSV文件标题”,
    “主题”=>“CSV文件主题”,
    “说明”=>“CSV文件说明”,
    “exportText”=>“下载文件”,
    'filename'=>urlencode('My file to download'),
    “exportType'=>CSV',#可用选项=>Excel5、Excel2007、PDF、HTML、CSV
    '模板'=>“{exportbuttons}”,
    '列'=>数组(
    “可乐”,
    “科尔布”
    ...
    ),
    ));
    
    不要管每个人


    我编辑了搜索功能,以便在创建CSV文件之前对其进行过滤。

    谢谢您的帮助,伙计。我已经可以下载CSV文件了。我只需要让它只下载选定的结果。我一定会用你的分机试试,再次谢谢。