Поддержка
Ресурсы

Экспорт данных

Выгрузка записей ресурса в XLSX с учётом фильтров и поиска

Экспорт выгружает текущий набор записей таблицы (с учётом поиска, фильтров и активной призмы) в XLSX-файл. По умолчанию доступен для всех ресурсов.

Поля для экспорта

Метод fieldsForExport() переопределяет набор полей именно для выгрузки. Если не задан — используются поля из fieldsForIndex() / fields().

app/Frame/Resources/UserResource.php
use Frame\Laravel\Fields\Email;
use Frame\Laravel\Fields\ID;
use Frame\Laravel\Fields\Text;
use Frame\Laravel\Fields\Textarea;

public function fieldsForExport(): array
{
    return [
        ID::make('ID'),
        Text::make('name', 'Имя'),
        Email::make('email', 'Почта'),
        Textarea::make('description', 'Описание'),
    ];
}
В экспорт стоит включать только те поля, которые имеют смысл в плоском XLSX — обычно без BelongsTo-связей с большими карточками и без File/Image.

Настройка опций экспорта

Через хук setUp() можно изменить подпись кнопки, имя файла и полностью отключить экспорт:

app/Frame/Resources/OrderResource.php
use Frame\Laravel\Options\Options;

protected function setUp(Options $options): void
{
    $options->export
        ->label('Выгрузить в XLSX')
        ->filename('orders-' . now()->format('Y-m-d') . '.xlsx');
}
enabled
bool \$val = true → static
Включает или выключает кнопку экспорта. По умолчанию — включено.
label
string \$val → static
Текст кнопки экспорта. По умолчанию — «Export» (переводится через __()).
filename
string|callable \$val → static
Имя выгружаемого файла. Можно передать строку или замыкание, возвращающее строку.

Отключение экспорта

protected function setUp(Options $options): void
{
    $options->export->enabled(false);
}

Кнопка «Экспорт» исчезнет из интерфейса, а соответствующий HTTP-эндпоинт вернёт 403.

Экспорт в призме

Призма может использовать собственный fieldsForExport(). Если он переопределён — он имеет приоритет над методом ресурса, когда активна призма. См. Призмы.

Как это работает

Экспорт выполняется через очередь — ресурсоёмкие выгрузки не блокируют запрос. Пользователь видит прогресс и ссылку на скачивание по завершении. Файл формируется phpoffice/phpspreadsheet (XLSX). Для медиа-полей в ячейки попадает export() соответствующего драйвера — например путь или URL файла.