MoonShine MoonShine
EN
← 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
Github stars
1
MoonShine Software
Author
MoonShine Software

MoonShine Import/Export Handlers

Documentation

Requirements

  • MoonShine 3+
  • Laravel 10+
  • PHP 8.2+

Installation

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

Usage

  • Add trait MoonShine\ImportExport\Traits\ImportExportConcern and interface MoonShine\ImportExport\Contracts\HasImportExportContract to ModelResource
/**
* @extends ModelResource<Category>
*/
class CategoryResource extends ModelResource implements HasImportExportContract
{
use ImportExportConcern;
 
// ...
}
/**
* @extends ModelResource<Category>
*/
class CategoryResource extends ModelResource implements HasImportExportContract
{
use ImportExportConcern;
 
// ...
}
  • Define fields
/**
* @extends ModelResource<Category>
*/
class CategoryResource extends ModelResource implements HasImportExportContract
{
use ImportExportConcern;
 
// ...
 
protected function exportFields(): iterable
{
return [
ID::make(),
Position::make(),
Text::make('Name'),
];
}
 
protected function importFields(): iterable
{
return [
ID::make(),
Text::make('Name'),
];
}
}
/**
* @extends ModelResource<Category>
*/
class CategoryResource extends ModelResource implements HasImportExportContract
{
use ImportExportConcern;
 
// ...
 
protected function exportFields(): iterable
{
return [
ID::make(),
Position::make(),
Text::make('Name'),
];
}
 
protected function importFields(): iterable
{
return [
ID::make(),
Text::make('Name'),
];
}
}
  • 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;
}