datatable.directory codebase https://datatable.directory/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
datatable.directory/app/Tables/CsvExporter.php

53 lines
1.1 KiB

<?php
namespace App\Tables;
class CsvExporter extends BaseExporter
{
/**
* @return string - mime type for the downloaded file
*/
protected function getMimeType()
{
return $this->wantDownload ? 'text/csv' : 'text/plain';
}
/**
* @return string - file extension for the downloaded file
*/
protected function getFileExtension()
{
return 'csv';
}
/**
* Write the document to stdout ('php://output')
*/
protected function writeDocument()
{
$handle = fopen('php://output', 'w');
$columnNames = array_map(function (Column $c) {
return $c->title;
}, $this->columns);
fputcsv($handle, $columnNames);
foreach ($this->iterateRows() as $row) {
$items = [];
foreach ($this->columns as $column) {
if (isset($row->{$column->name})) {
$items[] = $row->{$column->name};
} else {
$items[] = null;
}
}
fputcsv($handle, $items);
}
fclose($handle);
}
}