mellojoaoaus / filament-import
1.6.3
2024-05-06 04:42 UTC
Requires
- php: ^8.0
- filament/filament: ^3
- filament/notifications: ^3.0
- illuminate/contracts: ^10
- illuminate/support: ^10.0
- livewire/livewire: ^3
- maatwebsite/excel: ^3.1.48
- psr/simple-cache: ^2.0|^3.0
- spatie/laravel-package-tools: ^1.16
Requires (Dev)
- laravel/pint: ^1.11
- nunomaduro/collision: ^6.4|^7.0
- nunomaduro/larastan: ^2.6.4
- orchestra/testbench: ^8.8
- pestphp/pest: ^2
- pestphp/pest-plugin-laravel: ^2
- pestphp/pest-plugin-livewire: ^2.1
- phpstan/extension-installer: ^1.3.1
- phpstan/phpstan-deprecation-rules: ^1.1.4
- phpstan/phpstan-phpunit: ^1.3.13
- phpunit/phpunit: ^9.6.10|^10.0
This package is auto-updated.
Last update: 2024-09-06 05:17:30 UTC
README
用于将CSV和XLS文件导入数据库的Filament插件
此包将使您从文件导入模型变得非常简单,无需使用模板。
您只需拖放并匹配文件的字段和列,然后让魔法发生!
安装
您可以通过composer安装此包
composer require konnco/filament-import
发布配置
如果您想手动进行设置,请发布现有配置。
php artisan vendor:publish --tag=filament-import-config
用法
将操作导入到 ListRecords
页面
use Konnco\FilamentImport\Actions\ImportAction; use Konnco\FilamentImport\Actions\ImportField; class ListCredentialDatabases extends ListRecords { protected static string $resource = CredentialDatabaseResource::class; protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('project') ->label('Project') ->helperText('Define as project helper'), ImportField::make('manager') ->label('Manager'), ]) ]; } }
必填字段
protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('project') ->label('Project') ->required(), ]) ]; }
禁用批量创建
如果您仍然坚持使用事件模型,您可能需要此功能并关闭批量创建
protected function getActions(): array { return [ ImportAction::make() ->massCreate(false) ->fields([ ImportField::make('project') ->label('Project') ->required(), ]) ]; }
过滤空白行
如果您有一个包含空白数据的电子表格,您可以点击此处了解更多信息点击这里,您可以将这些过滤掉
protected function getActions(): array { return [ ImportAction::make() ->handleBlankRows(true) ->fields([ ImportField::make('project') ->label('Project') ->required(), ]) ]; }
字段数据变异
您还可以在保存到模型之前从行电子表格中操作数据
protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('project') ->label('Project') ->mutateBeforeCreate(fn($value) => Str::of($value)->camelCase()) ->required(), ]) ]; }
否则,您可以在数据插入数据库之前从字段中获取所有变异数据。
protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('email') ->label('Email') ->required(), ])->mutateBeforeCreate(function($row){ $row['password'] = bcrypt($row['email']); return $row; }) ]; }
还可以在数据插入数据库后操作数据
use Illuminate\Database\Eloquent\Model; protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('email') ->label('Email') ->required(), ])->mutateAfterCreate(function(Model $model, $row){ // do something with the model return $model; }) ]; }
网格列
当然,您可以将列网格分成几个部分,以美化数据映射的外观
protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('project') ->label('Project') ->required(), ], columns:2) ]; }
JSON格式字段
我们还支持JSON格式字段,您可以在调用make
函数时设置,并使用点注释分隔名称
protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('project.en') ->label('Project In English') ->required(), ImportField::make('project.id') ->label('Project in Indonesia') ->required(), ], columns:2) ]; }
静态字段数据
对于静态字段数据,您可以使用filament中的常用字段
use Filament\Forms\Components\Select; protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('name') ->label('Project') ->required(), Select::make('status') ->options([ 'draft' => 'Draft', 'reviewing' => 'Reviewing', 'published' => 'Published', ]) ], columns:2) ]; }
唯一字段
如果您的模型应该是唯一的,您可以传递字段的名称,该名称将用于检查数据库中是否已存在该行。如果存在,则跳过该行(防止出现非唯一行的错误)
use Filament\Forms\Components\Select; protected function getActions(): array { return [ ImportAction::make() ->uniqueField('email') ->fields([ ImportField::make('email') ->label('Email') ->required(), ], columns:2) ]; }
验证
您可以验证导入字段,有关可用的验证信息,请参阅Laravel文档
use Filament\Forms\Components\Select; protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('name') ->label('Project') ->rules('required|min:10|max:255'), ], columns:2) ]; }
创建记录
您可以通过使用handleRecordCreation
函数来覆盖默认的记录创建闭包,并放置您自己的代码
use Filament\Forms\Components\Select; protected function getActions(): array { return [ ImportAction::make() ->fields([ ImportField::make('name') ->label('Project') ->rules('required|min:10|max:255'), ], columns:2) ->handleRecordCreation(function($data){ return Post::create($data); }) ]; }
测试
composer test
更改日志
请参阅CHANGELOG以获取有关最近更改的更多信息。
贡献
请参阅CONTRIBUTING以获取详细信息。
安全漏洞
请参阅我们的安全策略以了解如何报告安全漏洞。