康诺斯 / 丝杠导入
2.0.2-beta
2023-09-14 03:29 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
- dev-filament3
- v2.x-dev
- 2.0.2-beta
- 2.0.1-beta
- 2.0.0-beta
- 1.6.1
- 1.6.0
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.3.0
- 1.2.7
- 1.2.6
- 1.2.5
- 1.2.4
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.5
- 1.0.4
- 1.0.3
- 1.0.2
- 1.0.1
- 1.0.0
- 0.0.2
- 0.0.1
- dev-dependabot/github_actions/stefanzweifel/git-auto-commit-action-5
- dev-fix/import-accepted-mime-types
- dev-main
- dev-dependabot/github_actions/actions/checkout-4
- dev-dependabot/github_actions/ramsey/composer-install-2
This package is auto-updated.
Last update: 2024-09-09 18:57:23 UTC
README
丝杠插件,用于将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
更新日志
请参阅更新日志了解最近的变化。
贡献
请参阅贡献指南了解详细信息。
安全漏洞
请查看我们的安全策略了解如何报告安全漏洞。