-
-
Notifications
You must be signed in to change notification settings - Fork 853
Description
Hello!! I tried for a few days export the datatable with only visible columns, finally i got it. The code worked for me:
public function getColumns(): array
{
$columns = [
/columns/
];
$request = $this->request();
if ($request->has('action') && in_array($request->get('action'), ['excel','csv'])) {
if ($request->has('visible_columns')) {
$visibleColumns = (array) $request->get('visible_columns');
/** @var Column $column */
foreach ($columns as $column) {
if (!in_array($column->name, $visibleColumns)) {
$this->excludeFromExport[] = $column->name;
}
}
}
}
return $columns;
}
I found it in: yajra/laravel-datatables-buttons#78 (comment)
Well. the method $this->excludeFromExport[] only works with csv and excel buttons (postExcelVisibleColumns and postCsvVisibleColumns extensions especifically), do not works for postPdf. I tried to create extension postPdfVisibleColumns folowing the same logic than postExcelVisibleColumns and postCsvVisibleColumns but doesn't works
DataTable.ext.buttons.postPdfVisibleColumns = {
className: 'buttons-pdf',
text: function (dt) {
return '<i class="fa fa-file-pdf"></i> ' + dt.i18n('buttons.pdf', 'PDF');
},
action: function (e, dt, button, config) {
var url = dt.ajax.url() || window.location.href;
var params = _buildParams(dt, 'pdf',true);
_downloadFromUrl(url, params);
}
};
and adding the action 'pdf ' to if ($request->has('action') && in_array($request->get('action'), ['excel','csv']))
but no way.
Do anyone kwow how to exclude non visible columns on PDF? Thanks!!