Доступные типы вывода:

Вывод таблицей

…->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).