CakePHP 3 - 根据用户输入的CSV导出器

时间:2017-07-24 07:34:03

标签: html5 csv cakephp cakephp-3.0

您好我正在使用CSV导出器,它对我来说非常好用。这个人(https://github.com/FriendsOfCake/cakephp-csvview)在这方面做得非常出色的所有成绩。

所以默认情况下,如果我想将一些表上显示的记录显示到csv视图,我只需要执行以下操作。

客户控制器

public function export() {
    $this->response->download('export.csv');
    $opts1['order'] = array('Customers.name' => 'asc');
    $data = $this->Customers->find('all',$opts1)->toArray();

    $_serialize = 'data';
    $_extract = ['id', 'name' ,'nic' , 'dob' , 'address'];

    $_header = ['ID', 'Name' ,'NIC' , 'DOB' , 'Address'];
    $this->set(compact('data', '_serialize', '_header', '_extract'));

    $this->viewBuilder()->className('CsvView.csv');
    return;
}

查看

<?= $this->Html->link('Report', [
        'controller' => 'customers', 
        'action' => 'export',
        '_ext' => 'csv'
        ],

        ['class' => 'btn btn-success']) 
      ?>

我正在尝试让CSV文件根据用户从前端(从html5日历视图)选择​​的日期显示数据。我怎么能得到这个?将数据从前端发送到控制器以获得过滤输出的方法是什么?

HTML5日期选择器     

我目前正在使用CakePHP v3.4.7。

PS - 我真的很陌生:S试图熟悉这个框架。

1 个答案:

答案 0 :(得分:0)

请按照以下步骤操作:

  1. 创建一个包含任何唯一ID的表单。
  2. 将您的日期选择器保留在该表单中。
  3. 添加链接或按钮。
  4. 当您点击链接/按钮时,请调用AJAX。获取表单数据并将其传递给控制器​​函数,该函数包含生成CSV的代码。
  5. 将CSV存储在资产文件夹中。
  6. 您的功能必须返回CSV文件的名称。
  7. 现在您的成功AJAX通话添加到下面的行 location.href =&#34;路径/到/ csv_file_in_asset&#34;