#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;