elsayed85 / filament-import
dev-filament3
2023-09-16 14:56 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-16 17:06:40 UTC
README
Filament插件,用于将CSV和XLS文件导入数据库
此包将使您更容易从文件导入到模型,无需创建模板即可轻松完成。
您只需要拖放并匹配文件的字段和列,然后让魔法发生!
安装
您可以通过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
变更日志
请参阅变更日志以获取有关最近更改的更多信息。
贡献
请参阅贡献指南以获取详细信息。
安全漏洞
请查看我们的安全策略以了解如何报告安全漏洞。