Не удается сохранить данные в csv-файл с помощью плагина CsvView

#php #csv #cakephp #export-to-csv

#php #csv #cakephp #экспорт в csv

Вопрос:

Я хочу сохранить результат запроса из базы данных в файл csv. Но мне нужен только HTML-код в csv-файле…

Это мой текущий project.ctp

 <section class="content-header">
  <h1>

    <?php
    foreach($currentProject as $i){
        // debug($i);
        echo __('Details of the project: ').$i['shortname'];
    }
     ?>
    <hr>
  </h1>
  <ol class="breadcrumb">
    <li>
    <?= $this->Html->link('save', [
        'controller' => 'projects', 
        'action' => 'export',
        // '_ext' => 'csv'
        ],

        ['class' => 'btn btn-success']) 
      ?>
    </li>
    <li>
    <?= $this->Html->link('<i class="fa fa-dashboard"></i> '.__('Back'), ['action' => 'index'], ['escape' => false]) ?>
    </li>
  </ol>
</section>
  

Это моя функция экспорта в контроллере: ProjectsController.php

 public function export() {
        $this->response->download('export.csv');
        $data = [
            ['a', 'b', 'c'],
            [1, 2, 3],
            ['you', 'and', 'me'],
        ];
        $_serialize = 'data';
        // $this->response->download('export.csv');

        $this->viewBuilder()->setClassName('CsvView.Csv');
        $this->set(compact('data', '_serialize'));
        return;
    }
  

Маршруты: Router::extensions([‘csv’]);

Это результат… Я хочу видеть в файле массив данных $ в ячейках

 <!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>ContentSYSTEM</title>
    <!-- Tell the browser to be responsive to screen width -->
    <meta content="width=device-width
    <!-- Bootstrap 3.3.5 -->
    <link rel="stylesheet" href="/admin_l_t_e/bootstrap/css/bootstrap.min.css"/>    <!-- Font Awesome -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.5.0/css/font-awesome.min.css">
    <!-- Ionicons -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/ionicons/2.0.1/css/ionicons.min.css">
    <!-- Theme style -->
    <link rel="stylesheet" href="/admin_l_t_e/css/AdminLTE.min.css"/><!-- AdminLTE Skins. Choose a skin from the css/skins
...
  

Ответ №1:

Ниже вы должны добавить в свой контроллер:

 use CakeViewViewBuilder;