cswni/filament-export

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

v1.1 2023-01-13 17:40 UTC

This package is auto-updated.

Last update: 2024-09-13 20:58:38 UTC


README

Latest Stable Version Total Downloads License

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

此包提供批量操作和标题操作,以便轻松导出您的丝束表。

filament-export-3

要求

依赖关系

安装

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"

此包有两个视图

  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,
    ...
]