cswni / filament-export
为 Filament 管理面板提供可定制的导出和打印功能
v1.1
2023-01-13 17:40 UTC
Requires
- php: ^8.0
- barryvdh/laravel-dompdf: ^2.0
- filament/filament: ^2.0
- spatie/simple-excel: ^3
Requires (Dev)
- orchestra/testbench: ^7.6
- pestphp/pest: ^1.21
- pestphp/pest-plugin-livewire: ^1.0
This package is auto-updated.
Last update: 2024-09-13 20:58:38 UTC
README
为 Filament 管理面板提供可定制的导出和打印功能。
此包提供批量操作和标题操作,以便轻松导出您的丝束表。
要求
- PHP 8
- Filament 2.0
依赖关系
安装
composer require cswni/filament-export
使用
简单用法
批量操作
您可以使用批量操作导出选定的行。
$table->bulkActions([ ... FilamentExportBulkAction::make('export') ... ]);
标题操作
您可以使用标题操作过滤、搜索、排序和导出您的表格。
$table->headerActions([ ... FilamentExportHeaderAction::make('export') ... ]);
由于 ButtonAction 已弃用,您可以使用 ->button() 使用此操作。
完整用法
这两个操作都提供了配置函数。
FilamentExportBulkAction::make('export') ->fileName('My File') // Default file name ->timeFormat('m y d') // Default time format for naming exports ->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 ->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
您还可以使用默认的批量操作和标题操作函数来自定义操作。
大数据集的性能提示
- 由于标题操作执行服务器端分页,您可以选择标题操作而不是批量操作。
- 您可以选择禁用预览。
- 您可以选择启用直接下载。
配置
发布配置
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, ... ]