Я использую datatables для динамического рендеринга таблицы в моем шаблоне блейда. У меня есть ряд флажков, которые пользователь может установить, чтобы показать / скрыть столбцы таблицы. Все это прекрасно работает.
Вот так выглядит мой шаблон:
template.blade.php
<table id="dataTables-report" class="table table-striped table-bordered table-hover">
</table>
Вот то, что я использую для рендеринга таблицы:
scripts.js
$('#dataTables-report').DataTable({
...
columnDefs: [
{
targets: 0,
title: 'Name',
searchable: true,
data: function (row, type, val, meta) {
// return row.data;
}
},
@if($report->order_date)
{
targets: 1,
title: 'Order Date',
searchable: false,
data: function (row, type, val, meta) {
// return row.data;
}
},
@endif
@if($report->order_number)
{
targets: 2, // could be 1 if order date is not selected
title: 'Order Number',
searchable: false,
data: function (row, type, val, meta) {
// return row.data;
}
},
@endif
...
});
«Дата заказа» - это флажок, который пользователь может выбрать для отображения на столе. Если он отмечен, он показывает этот столбец. В противном случае это не так.
Возможно, что сначала будет выбран другой столбец, и это может быть targets: 1
. Теперь, если пользователь установит другой флажок, targets
необходимо динамически установить следующий номер. В этом случае: targets: 2
.
Каждый флажок хранится как отдельный столбец в базе данных, поэтому я не думаю, что смогу выполнить какой-либо цикл (отсюда куча операторов if). В противном случае, я думаю что-то вроде этого будет работать.
Есть ли способ динамически генерировать число targets
прямо в моем шаблоне блейда?