iracode-com/filament-excel-pro

基于 `SpartanNL/Laravel-Excel` 包的高级 Excel 文件数据录入的 Filament 插件

安装: 0

依赖: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 0

开放问题: 0

类型:filament-plugin

dev-main 2024-08-25 13:14 UTC

This package is auto-updated.

Last update: 2024-09-25 16:05:21 UTC


README

SpartanNL/Laravel-Excel 的 Filament 扩展功能包

本包提供 Filament 资源,用于添加基于 SpartanNL/Laravel-Excel 包的高级数据导入功能

需求

  • Laravel v11
  • Filament v3
  • SpartanNL/Laravel-Excel v3

支持的语言

Filament Excel Pro 插件已翻译为

  • 美式英语
  • 波斯语

安装

您可以通过 composer 安装此包

composer require iracode-com/filament-excel-pro

之后运行安装命令

php artisan filament-excel-pro:install

这将发布 iracode-com/filament-excel-pro 中的配置、迁移和翻译

并运行迁移

php artisan migrate

您可以使用以下命令手动发布配置文件

php artisan vendor:publish --tag="filament-excel-pro-config"

这是发布配置文件的内容

return [
    /*
     * This model will be used to import.
     */
    'import_model' => \IracodeCom\FilamentExcelPro\Model\Importable::class,

    /*
     * This model will be determined as user model.
     * creator, updater: foreign key columns in import model for creator, updater relationships
     */
    'user'         => [
        'model'   => \App\Models\User::class,
        'creator' => 'created_by',
        'updater' => 'updated_by'
    ],

    /*
     * This is the name of the table that will be created by the migration and
     * used by the Import model shipped with this package.
     */
    'table'        => 'importables',

    'resources' => [
        'label'                  => 'Excel Import',
        'plural_label'           => 'Excel Imports',
        'navigation_group'       => null,
        'navigation_icon'        => 'heroicon-o-clipboard-document-check',
        'navigation_sort'        => null,
        'navigation_count_badge' => false,
        'resource'               => \IracodeCom\FilamentExcelPro\Resources\ImportableResource::class,
    ],

    'datetime_format' => 'd/m/Y H:i:s',
];

可选地,您可以使用以下命令发布视图

php artisan vendor:publish --tag="filament-excel-pro-views"

使用方法

基本的 SpartanNL Laravel Excel 使用方法

在您的 AppServiceProvider 中添加 HeadingRowFormatter::default('none') 方法以禁用格式化

use Illuminate\Support\ServiceProvider;
use Maatwebsite\Excel\Imports\HeadingRowFormatter;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     */
    public function register(): void
    {
        //
    }

    /**
     * Bootstrap any application services.
     */
    public function boot(): void
    {
        HeadingRowFormatter::default('none');
    }
}

插件使用

在您的面板服务提供者 (App\Providers\Filament) 中激活插件

IracodeCom\FilamentExcelPro\FilamentExcelProPlugin 添加到您的面板配置中

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make(),
        ]);
}

自定义导入资源

您可以通过更新 ->resource() 值来替换使用的 ImportableResource。使用此方法创建自己的 CustomResource 类,并在 \IracodeCom\FilamentExcelPro\Resources\ImportableResource::class 处扩展原始类。这将允许您自定义视图、表格、表单和权限等一切内容。

注意

如果您希望在列表和视图页面上更改资源,请确保在新的资源上替换 getPages 方法,并创建自己的 ListPageViewPage 类以引用自定义的 CustomResource

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->resource(\Path\For\Your\CustomResource::class),
        ]);
}

自定义资源标签

您可以通过更新 ->label()->pluralLabel() 值来替换使用的 Resource label

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->label('Excel import')
                ->pluralLabel('Excel imports'),
        ]);
}

分组资源导航项

您可以通过更新 ->navigationGroup() 值来添加 Resource navigation group

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->navigationGroup('Excel import'),
        ]);
}

自定义资源导航图标

您可以通过更新 ->navigationIcon() 值来替换使用的 Resource navigation icon

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->navigationIcon('heroicon-o-clipboard-document-check'),
        ]);
}

激活计数徽章

您可以通过更新 ->navigationCountBadge() 值来激活 Count Badge

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->navigationCountBadge(true),
        ]);
}

设置导航排序

您可以通过更新 ->navigationSort() 值来设置 Resource navigation sort

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->navigationSort(3),
        ]);
}

授权

如果您希望阻止某些用户访问日志资源,请在 FilamentExcelProPlugin 链中添加授权回调。

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->authorize(
                    fn () => auth()->user()->id === 1
                ),
        ]);
}

完整配置

use IracodeCom\FilamentExcelPro\FilamentExcelProPlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        ->plugins([
            FilamentExcelProPlugin::make()
                ->resource(\Path\For\Your\CustomResource::class)
                ->label('Excel import')
                ->pluralLabel('imports')
                ->navigationGroup('Excel import')
                ->navigationIcon('heroicon-o-shield-check')
                ->navigationCountBadge(true)
                ->navigationSort(2)
                ->authorize(
                    fn () => auth()->user()->id === 1
                ),
        ]);
}

变更日志

有关最近更改的更多信息,请参阅变更日志

致谢

特别感谢这些杰出的工具和人们(开发者),Excel 导入插件的存在仅因他们的启发以及在某个阶段使用这些人的代码。

鸣谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅许可证文件