Типы отображения данных
Доступные типы вывода:
Вывод таблицей
…->display(function ()
{
$display = AdminDisplay::table();
// configure display
return $display;
})
Указание столбцов
Укажите столбцы для отображения в таблице. Подробнее смотрите в разделе столбцы.
$display->columns([
Column::string('title')->label('Title'),
...
]);
Фильтры столбцов
Вы можете указать фильтр для каждого столбца. Подробнее смотрите в разделе фильтры столбцов.
$display->columnFilters([
null, // у первого столбца нет фильтра
ColumnFilter::text()->placeholder('Title'), // у второго столбца тектовый фильтр
])
Eager Loading
Укажите связи для eager load.
$display->with('related', 'other_relation');
Изменение запроса
Вы можете изменять запрос по желанию:
$display->apply(function ($query)
{
$query->where('my_field', 2);
$query->orderBy('date', 'desc');
});
Применение scope
Вы можете применить eloquent scope к выводимым данным:
$display->scope('myScope');
Указание фильтров
Вы можете добавить фильтры к отображению. Фильтры будут применены на основе параметров запроса. Подробнее смотрите в разделе фильтры.
$display->filters([
Filter::scope('last')->title('Latest News'),
...
]);
Указание параметров
Эти параметры будут добавлены к ссылкам на добавление и редактирование. Эти параметры могут быть использованы в качестве значений по умолчанию для элементов формы.
$display->parameters([
'related_id' => 12,
...
]);
Массовые действия
Вы можете добавить массовые действия:
$display->actions([
Column::action('export')->value('Export')->icon('fa-share')->target('_blank')->callback(function ($collection)
{
dd('You are trying to export:', $collection->toArray());
}),
...
]);
Для использования массовых действий необходимо добавить Column::checkbox()
в список столбцов.
Вывод Datatables
Это вид основан на табличном виде и вы можете использовать все возможности табличного вида.
…->display(function ()
{
$display = AdminDisplay::datatables();
// configure display
return $display;
})
Указание сортировки
Вы можете указать сортировку по умолчанию для вашей таблицы в формате сортировки datatables (порядковый номер столбца и направление сортировки):
$display->order([[0, 'desc']]);
Вы можете указать сортировку по нескольким столбцам:
$display->order([[0, 'desc'], [2, 'asc']]);
Атрибуты datatables
Вы можете указать атрибуты datatables:
$display->attributes([
'ordering' => false,
'stateSave' => true,
]);
Поддерживаемые атрибуты:
ordering
— boolean, включена ли функция сортировки (по умолчанию: true)stateSave
— boolean, включена ли функция сохранения состояния (по умолчанию: true)
Асинхронный вывод Datatables
Этот вид основан на datatables виде. Вам не нужно производить каких-либо дополнительных конфигураций, ваша datatables таблица станет асинхронной с этим видом.
…->display(function ()
{
$display = AdminDisplay::datatablesAsync();
// configure display
return $display;
})
Этот вид имеет некоторые ограничения:
- вы не можете сортировать по столбцу не из вашей таблицы (вам необходимо пометить эти столбцы как несортируемые вручную)
- вы не можете фильтровать по столбцу не из вашей таблицы
- если вы хотите использовать асинхронный вывод datatables внутри вывода табами, необходимо указать имя таблицы:
AdminDisplay::datatablesAsync('my-table-name')
Вывод деревом
Поддерживается 2 nested-sets пакета:
И простое дерево, основанное на полях parent_id
и order
.
Если у вас установлен один из этих пакетов, вы можете использовать вывод деревом:
…->display(function ()
{
$display = AdminDisplay::tree();
// configure display
return $display;
})
Указание отображаемого поля
Вы должны указать поле для вывода в качестве заголовка записи (по умолчанию 'title').
$display->value('myTitleField');
Отключение сортировки
Вы можете включить или выключить сортировку дерева.
$display->reorderable(false);
Простое дерево
Вы можете использовать этот тип дерева, если у вас в таблице есть поля parent_id
и order
.
Необходимо указать названия полей и значение корневого parent_id (по умолчанию null
):
$display->parentField('parent_id');
$display->orderField('order');
$display->rootParentId(0);
Вывод табами
Вы можете объединить несколько типов выводов используя табы.
…->display(function ()
{
$display = AdminDisplay::tabbed();
// configure display
return $display;
})
Указание табов
Вы должны указать табы:
$display->tabs(function ()
{
$tabs = [];
$firstTab = AdminDisplay::table();
// configure first tab display
$tabs[] = AdminDisplay::tab($firstTab)->label('First Tab')->active(true);
$secondTab = AdminDisplay::datatables();
// configure second tab display
$tabs[] = AdminDisplay::tab($secondTab)->label('Second Tab');
$thirdTab = Admin::model('App\MyOtherModel')->display();
// this tab will be display from 'App\MyOtherModel' configuration
$tabs[] = AdminDisplay::tab($thirdTab)->label('Third Tab');
return $tabs;
});
Произвольный вывод
Вы можете использовать свои собственные view и отображать их как угодно:
…->display(function ()
{
$rows = App\News::all();
$model = Admin::model('App\News');
return view('custom_display', compact('rows', 'model'));
})
Url для формы создания можно получить через $model->createUrl()
.
Url для формы редактирования можно получить через $model->editUrl($id)
.