Skip to content

Commit 533d069

Browse files
committed
Allow customization of export and print columns.
1 parent b6c04f1 commit 533d069

File tree

1 file changed

+26
-2
lines changed

1 file changed

+26
-2
lines changed

src/Services/DataTable.php

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
use Illuminate\Support\Collection;
77
use Yajra\DataTables\Contracts\DataTableScope;
88
use Yajra\DataTables\Contracts\DataTableButtons;
9+
use Yajra\DataTables\Html\Column;
910
use Yajra\DataTables\Transformers\DataArrayTransformer;
1011

1112
abstract class DataTable implements DataTableButtons
@@ -238,7 +239,7 @@ protected function getDataForPrint()
238239
*/
239240
protected function printColumns()
240241
{
241-
return is_array($this->printColumns) ? $this->printColumns : $this->getPrintColumnsFromBuilder();
242+
return is_array($this->printColumns) ? $this->toColumnsCollection($this->printColumns) : $this->getPrintColumnsFromBuilder();
242243
}
243244

244245
/**
@@ -452,7 +453,30 @@ protected function getDataForExport()
452453
*/
453454
private function exportColumns()
454455
{
455-
return is_array($this->exportColumns) ? $this->exportColumns : $this->getExportColumnsFromBuilder();
456+
return is_array($this->exportColumns) ? $this->toColumnsCollection($this->exportColumns) : $this->getExportColumnsFromBuilder();
457+
}
458+
459+
/**
460+
* Convert array to collection of Column class.
461+
*
462+
* @param array $columns
463+
* @return Collection
464+
*/
465+
private function toColumnsCollection(array $columns) {
466+
$collection = collect();
467+
foreach ($columns as $column) {
468+
if (isset($column['data'])) {
469+
$column['title'] = $column['title'] ?? $column['data'];
470+
$collection->push(new Column($column));
471+
} else {
472+
$data = [];
473+
$data['data'] = $column;
474+
$data['title'] = $column;
475+
$collection->push(new Column($data));
476+
}
477+
}
478+
479+
return $collection;
456480
}
457481

458482
/**

0 commit comments

Comments
 (0)