public function TablefieldController::exportCsv in TableField 8.2
Menu callback to export a table as a CSV.
Parameters
\Drupal\Core\Entity\EntityInterface $entity: The entity object.
string $field_name: The machine name of the field to load.
string $langcode: The language code specified.
string $delta: The field delta to load.
Return value
\Symfony\Component\HttpFoundation\StreamedResponse A streamed response containing tablefield data as a CSV.
1 string reference to 'TablefieldController::exportCsv'
File
- src/
Controller/ TablefieldController.php, line 57
Class
- TablefieldController
- Controller routines for tablefield routes.
Namespace
Drupal\tablefield\ControllerCode
public function exportCsv(EntityInterface $entity, $field_name, $langcode, $delta) {
$filename = sprintf('%s_%s_%s_%s_%s.csv', $entity
->getEntityTypeId(), $entity
->id(), $field_name, $langcode, $delta);
// Tablefield::rationalizeTable($entity->{$field_name}[$delta]->value);.
$table = $entity->{$field_name}[$delta]->value;
$separator = \Drupal::config('tablefield.settings')
->get('csv_separator');
$response = new StreamedResponse();
$response
->setCallback(function () use ($table, $separator) {
ob_clean();
$handle = fopen('php://output', 'w+');
if (!empty($table) && $handle) {
foreach ($table as $row) {
if (is_array($row) && !is_null($row)) {
fputcsv($handle, $row, $separator);
}
}
}
fclose($handle);
});
$response
->setStatusCode(200);
$response->headers
->set('Content-Type', 'text/csv; charset=utf-8');
$response->headers
->set('Content-Disposition', 'attachment; filename="' . $filename . '"');
return $response;
}