alperenersoy / filament-export
为 Filament 管理面板提供可定制的导出和打印功能
v3.0.5
2024-09-21 11:16 UTC
Requires
- php: ^8.0
- barryvdh/laravel-dompdf: ^2.0
- filament/tables: ^3.0
- spatie/simple-excel: >=3.2.0
Requires (Dev)
- filament/filament: ^3.0
- orchestra/testbench: ^8.5
- pestphp/pest: ^2.1
- pestphp/pest-plugin-livewire: ^2.1
This package is auto-updated.
Last update: 2024-09-21 11:19:14 UTC
README
为 Filament 管理面板提供可定制的导出和打印功能。
此包提供批量操作和头部操作,以便轻松导出您的丝材表。
要求
- PHP 8
- Filament 2.0
依赖项
安装
composer require alperenersoy/filament-export
为独立表格构建器配置(实验性)
要使用此包作为独立表格构建器而不是 Filament 管理面板,您需要遵循以下步骤。否则,某些功能(如打印和预览)可能无法正常工作。
- 将
filament-export.css
导入您的/resources/app.css
@import '../../vendor/alperenersoy/filament-export/resources/css/filament-export.css';
- 将
filament-export.js
导入您的/resources/app.js
import '../../vendor/alperenersoy/filament-export/resources/js/filament-export.js';
- 编译您的资产
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"
此包有两个视图
-
"components\table_view.blade.php" 视图用于预览。
-
"pdf.blade.php" 视图用作 PDF 导出模板。
-
"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 导出
- 您只需向您的操作添加 ->snappy()。
FilamentExportBulkAction::make('export') ->snappy()
或者
FilamentExportHeaderAction::make('export') ->snappy()
- 您可以将配置文件更新为使用它作为默认设置。
[ ... 'use_snappy' => true, ... ]