alperenersoy/filament-export

为 Filament 管理面板提供可定制的导出和打印功能

v3.0.5 2024-09-21 11:16 UTC

README

为 Filament 管理面板提供可定制的导出和打印功能。

此包提供批量操作和头部操作,以便轻松导出您的丝材表。

filament-export-3

要求

依赖项

安装

composer require alperenersoy/filament-export

为独立表格构建器配置(实验性)

要使用此包作为独立表格构建器而不是 Filament 管理面板,您需要遵循以下步骤。否则,某些功能(如打印和预览)可能无法正常工作。

  1. filament-export.css 导入您的 /resources/app.css
@import '../../vendor/alperenersoy/filament-export/resources/css/filament-export.css';
  1. filament-export.js 导入您的 /resources/app.js
import '../../vendor/alperenersoy/filament-export/resources/js/filament-export.js';
  1. 编译您的资产
npm run dev

使用

简单使用

批量操作

您可以使用批量操作导出选定的行。

Filament 管理面板

$table->bulkActions([
    ...
    FilamentExportBulkAction::make('export')
    ...
]);

Filament 表格构建器

protected function getTableBulkActions(): array
{
    return [
        ...
        FilamentExportBulkAction::make('Export'),
        ...
    ];
}

头部操作

您可以使用头部操作过滤、搜索、排序和导出您的表格。

Filament 管理面板

$table->headerActions([
    ...
    FilamentExportHeaderAction::make('export')
    ...
]);

Filament 表格构建器

protected function getTableHeaderActions(): array
{
    return [
        ...
        FilamentExportHeaderAction::make('Export'),
        ...
    ];
}

由于 ButtonAction 已弃用,您可以使用 ->button() 来使用此操作。

完整使用

这两个操作都提供了配置函数。

FilamentExportBulkAction::make('export')
    ->fileName('My File') // Default file name
    ->timeFormat('m y d') // Default time format for naming exports
    ->disablePdf() // Disable PDF format for download
    ->disableXlsx() // Disable XLSX format for download
    ->disableCsv() // Disable CSV format for download
    ->defaultFormat('pdf') // xlsx, csv or pdf
    ->defaultPageOrientation('landscape') // Page orientation for pdf files. portrait or landscape
    ->directDownload() // Download directly without showing modal
    ->disableAdditionalColumns() // Disable additional columns input
    ->disableFilterColumns() // Disable filter columns input
    ->disableFileName() // Disable file name input
    ->disableFileNamePrefix() // Disable file name prefix
    ->disablePreview() // Disable export preview
    ->disableTableColumns() // Disable table columns in the export
    ->withHiddenColumns() //Show the columns which are toggled hidden
    ->fileNameFieldLabel('File Name') // Label for file name input
    ->formatFieldLabel('Format') // Label for format input
    ->pageOrientationFieldLabel('Page Orientation') // Label for page orientation input
    ->filterColumnsFieldLabel('filter columns') // Label for filter columns input
    ->additionalColumnsFieldLabel('Additional Columns') // Label for additional columns input
    ->additionalColumnsTitleFieldLabel('Title') // Label for additional columns' title input 
    ->additionalColumnsDefaultValueFieldLabel('Default Value') // Label for additional columns' default value input 
    ->additionalColumnsAddButtonLabel('Add Column') // Label for additional columns' add button 
    ->withColumns([TextColumn::make('additionalModelColumn')]) // Export additional model columns that aren't visible in the table results
    ->csvDelimiter(',') // Delimiter for csv files
    ->modifyExcelWriter(fn (SimpleExcelWriter $writer) => $writer->nameCurrentSheet('Sheet')) // Modify SimpleExcelWriter before download
    ->modifyPdfWriter(fn (\Barryvdh\DomPDF\PDF|\Barryvdh\Snappy\PdfWrapper $writer) => $writer->setPaper('a4', 'landscape')) // Modify DomPdf or Snappy writer before download
    ->formatStates([
        'name' => fn (?Model $record) => strtoupper($record->name),
    ]) // Manually format states for a specific column

您还可以使用默认的批量操作和头部操作函数来自定义操作。

大数据集的性能提示

  • 由于头部操作执行服务器端分页,您可以选择使用头部操作而不是批量操作。
  • 您可以选择禁用预览。
  • 您可以选择启用直接下载。

配置

发布配置

php artisan vendor:publish --provider="AlperenErsoy\FilamentExport\FilamentExportServiceProvider" --tag="config"

您可以配置以下设置

return [
    'default_format' => 'xlsx',
    'time_format' => 'M_d_Y-H_i',
    'default_page_orientation' => 'portrait',
    'disable_additional_columns' => false,
    'disable_filter_columns' => false,
    'disable_file_name' => false,
    'disable_preview' => false,
    'use_snappy' => false,
    'action_icon' => 'heroicon-o-document-download',
    'preview_icon' => 'heroicon-o-eye',
    'export_icon' => 'heroicon-o-download',
    'print_icon' => 'heroicon-o-printer',
    'cancel_icon' => 'heroicon-o-x-circle'
];

覆盖视图

发布视图

php artisan vendor:publish --provider="AlperenErsoy\FilamentExport\FilamentExportServiceProvider" --tag="views"

此包有两个视图

  1. "components\table_view.blade.php" 视图用于预览。

  2. "pdf.blade.php" 视图用作 PDF 导出模板。

  3. "print.blade.php" 视图用作打印模板。

在模板中使用自定义变量

FilamentExportBulkAction::make('export')
    ->extraViewData([
        'myVariable' => 'My Variable'
    ])

或使用闭包

FilamentExportHeaderAction::make('export')
    ->extraViewData(fn ($action) => [
        'recordCount' => $action->getRecords()->count()
    ])

然后在模板中将它们用作常规 blade 变量

{{ $myVariable }}

使用 Snappy

默认情况下,此包使用 dompdf 作为 PDF 生成器。

如果您想使用 Snappy,您需要将 barryvdh/laravel-snappy 安装到您的项目中,并自行配置它。(有关更多信息,请参阅 barryvdh/laravel-snappy。)

要使用 Snappy 进行 PDF 导出

  1. 您只需向您的操作添加 ->snappy()。
FilamentExportBulkAction::make('export')
    ->snappy()

或者

FilamentExportHeaderAction::make('export')
    ->snappy()
  1. 您可以将配置文件更新为使用它作为默认设置。
[
    ...
    'use_snappy' => true,
    ...
]