This package will make it easier for you to import from files to your model, very easily without the need to do templates.
all you have to do is drag and drop and match the fields and columns of your file, and let magic happens!
You can install the package via composer:
composer require konnco/filament-import
If you want to do the settings manually, please publish the existing config.
php artisan vendor:publish --tag=filament-import-config
import the actions into ListRecords
page
use Konnco\FilamentImport\Actions\ImportAction;
use Konnco\FilamentImport\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(),
])
];
}
if you still want to stick with the event model you might need this and turn off mass create
protected function getActions(): array
{
return [
ImportAction::make()
->massCreate(false)
->fields([
ImportField::make('project')
->label('Project')
->required(),
])
];
}
you can also manipulate data from row spreadsheet before saving to model
protected function getActions(): array
{
return [
ImportAction::make()
->fields([
ImportField::make('project')
->label('Project')
->mutateBeforeCreate(fn($value) => Str::of($value)->camelCase())
->required(),
])
];
}
otherwise you can manipulate data with other column in the same row by passing $row
as second argument and access the index of column
For example when create email from username
protected function getActions(): array
{
return [
ImportAction::make()
->fields([
ImportField::make('email')
->label('Email')
->mutateBeforeCreate(fn($value, $row) => $row['username'] . '@mail.com')
->required(),
])
];
}
Of course, you can divide the column grid into several parts to beautify the appearance of the data map
protected function getActions(): array
{
return [
ImportAction::make()
->fields([
ImportField::make('project')
->label('Project')
->required(),
], columns:2)
];
}
We also support the json format field, which you can set when calling the make
function and separate the name with a dot annotation
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)
];
}
for the static field data you can use the common fields from 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)
];
}
composer test
Please see CHANGELOG for more information on what has changed recently.
Please see CONTRIBUTING for details.
Please review our security policy on how to report security vulnerabilities.
Hafiz Abd |
Franky So |
Hafiz Abd |
Rizky Anfasa Farras Mada |
Tryo Asnafi |