← All plugins

MoonShine Import/Export Handlers

Made by the authors of MoonShine

Import/Export handlers for MoonShine Laravel admin panel. This package provides a flexible system for importing and exporting data with support for custom field definitions, data transformation, and lifecycle events. Easy integration with MoonShine ModelResources allows you to quickly implement import/export functionality in your admin panel.

Rating
Downloads
241
Version
-
Last updated
-
MoonShine version
v3, v4
Github stars
1
MoonShine Software
Author
MoonShine Software

MoonShine Import/Export Handlers

Documentation

Requirements

  • MoonShine 4+
  • Laravel 10+
  • PHP 8.2+

Installation

composer require moonshine/import-export
composer require moonshine/import-export

Usage

  • In ModelResource add the ImportExportConcern trait and implement the HasImportExportContract interface.
use MoonShine\ImportExport\Contracts\HasImportExportContract;
use MoonShine\ImportExport\Traits\ImportExportConcern;
 
class CategoryResource extends ModelResource implements HasImportExportContract
{
use ImportExportConcern;
 
// ...
}
use MoonShine\ImportExport\Contracts\HasImportExportContract;
use MoonShine\ImportExport\Traits\ImportExportConcern;
 
class CategoryResource extends ModelResource implements HasImportExportContract
{
use ImportExportConcern;
 
// ...
}
  • Define the fields that will be involved in import and export.
protected function exportFields(): iterable
{
return [
ID::make(),
Position::make(),
Text::make('Name'),
];
}
 
protected function importFields(): iterable
{
return [
ID::make(),
Text::make('Name'),
];
}
protected function exportFields(): iterable
{
return [
ID::make(),
Position::make(),
Text::make('Name'),
];
}
 
protected function importFields(): iterable
{
return [
ID::make(),
Text::make('Name'),
];
}
  • Import Events.
public function beforeImportFilling(array $data): array
{
return $data;
}
 
public function beforeImported(mixed $item): mixed
{
return $item;
}
 
public function afterImported(mixed $item): mixed
{
return $item;
}
public function beforeImportFilling(array $data): array
{
return $data;
}
 
public function beforeImported(mixed $item): mixed
{
return $item;
}
 
public function afterImported(mixed $item): mixed
{
return $item;
}
  • Queue.
protected function export(): ?Handler
{
return ExportHandler::make(__('moonshine::ui.export'))
->when(
$this->isExportToCsv(),
static fn (ExportHandler $handler): ExportHandler => $handler->csv()
)
->queue();
}
 
protected function import(): ?Handler
{
return ImportHandler::make(__('moonshine::ui.import'))->queue();
}
protected function export(): ?Handler
{
return ExportHandler::make(__('moonshine::ui.export'))
->when(
$this->isExportToCsv(),
static fn (ExportHandler $handler): ExportHandler => $handler->csv()
)
->queue();
}
 
protected function import(): ?Handler
{
return ImportHandler::make(__('moonshine::ui.import'))->queue();
}