Import Implementation
Copy
namespace App\Filament\Imports;
use App\Models\Product;
use Filament\Actions\Imports\ImportColumn;
use Filament\Actions\Imports\Importer;
use Relaticle\CustomFields\Facades\CustomFields;
class ProductImporter extends Importer
{
protected static ?string $model = Product::class;
// Simplest implementation: Add columns in getColumns()
public static function getColumns(): array
{
return [
// Regular columns
ImportColumn::make('name')->requiredMapping()->rules(['required']),
ImportColumn::make('price')->numeric(),
// Add all custom fields
...CustomFields::importer()->forModel(self::getModel())->columns(),
];
}
// After saving model, save custom fields
protected function afterSave(): void
{
CustomFields::importer()->forModel($this->record)->saveValues();
}
}
Export Implementation
Copy
namespace App\Filament\Exports;
use App\Models\Product;
use Filament\Actions\Exports\ExportColumn;
use Filament\Actions\Exports\Exporter;
use Relaticle\CustomFields\Facades\CustomFields;
class ProductExporter extends Exporter
{
protected static ?string $model = Product::class;
// Simply add your columns and spread in the custom fields
public static function getColumns(): array
{
return [
ExportColumn::make('id'),
ExportColumn::make('name'),
ExportColumn::make('price'),
// Add all custom fields
...CustomFields::exporter()->forModel(self::getModel())->columns(),
];
}
}