gsferro/livewire-import-easy
Componente Livewire (v3) pronto para importação “easy” de arquivos no Laravel 10+ usando maatwebsite/excel. Estenda LivewireImportEasy, defina a classe de importação, personalize accept, rótulo, ícone e mensagens de progresso/finalização.
Pros:
Cons:
Dependencies:
Key Integration Points:
\Gsferro\LivewireImportEasy\Livewire\LivewireImportEasy in custom components.vendor:publish.$importClass to define the Excel import class (must implement Maatwebsite\Excel\Concerns\ToModel or similar).maatwebsite/excel, which may have its own quirks (e.g., memory limits for large files).spatie/laravel-import-export, box/spout) if this package stagnates?maatwebsite/excel is compatible with your use case (test with sample files).composer require gsferro/livewire-import-easy
php artisan vendor:publish --provider="Gsferro\LivewireImportEasy\Providers\LivewireImportEasyServiceProvider" --force
LivewireImportEasy:
class MyImportComponent extends LivewireImportEasy {
public string $importClass = \App\Imports\MyExcelImport::class;
public string $accept = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';
}
@livewire('my-import-component')
$importingMessage, $icon) in the component class.$importClass (e.g., add business rules).$importing state updates UI).maatwebsite/excel).$importClass with business logic (e.g., data transformation).$importClass, making updates localized.maatwebsite/excel and Livewire for breaking changes.maatwebsite/excel/livewire/livewire.maatwebsite/excel docs or Livewire forums for troubleshooting.memory_limit (default 128MB). Consider:
memory_limit in php.ini.maatwebsite/excel's chunking feature:
public function model(array $row): Model {
return Model::firstOrCreate(['unique_field' => $row['column']]);
}
// In $importClass
public function import(array $rows) {
foreach ($rows as $row) {
ImportJob::dispatch($row)->onQueue('imports');
}
}
DB::transaction(function () use ($rows) {
Model::insert($rows);
});
| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Large file exceeds memory | PHP fatal error | Use chunking or queues |
| Malformed Excel data | Import fails silently | Add validation in $importClass |
| Livewire component timeout | UI hangs | Increase Livewire maxExecutionTime |
| Database constraints violated |
How can I help you explore Laravel packages today?