Экспорт данных
Экспорт выгружает текущий набор записей таблицы (с учётом поиска, фильтров и активной призмы) в XLSX-файл. По умолчанию доступен для всех ресурсов.
Поля для экспорта
Метод fieldsForExport() переопределяет набор полей именно для выгрузки. Если не задан — используются поля из fieldsForIndex() / fields().
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', 'Описание'),
];
}
BelongsTo-связей с большими карточками и без File/Image.Настройка опций экспорта
Через хук setUp() можно изменить подпись кнопки, имя файла и полностью отключить экспорт:
use Frame\Laravel\Options\Options;
protected function setUp(Options $options): void
{
$options->export
->label('Выгрузить в XLSX')
->filename('orders-' . now()->format('Y-m-d') . '.xlsx');
}
__()).Отключение экспорта
protected function setUp(Options $options): void
{
$options->export->enabled(false);
}
Кнопка «Экспорт» исчезнет из интерфейса, а соответствующий HTTP-эндпоинт вернёт 403.
Экспорт в призме
Призма может использовать собственный fieldsForExport(). Если он переопределён — он имеет приоритет над методом ресурса, когда активна призма. См. Призмы.
Как это работает
Экспорт выполняется через очередь — ресурсоёмкие выгрузки не блокируют запрос. Пользователь видит прогресс и ссылку на скачивание по завершении. Файл формируется phpoffice/phpspreadsheet (XLSX). Для медиа-полей в ячейки попадает export() соответствующего драйвера — например путь или URL файла.