akeneo-labs/custom-entity-bundle
AbstractCustomEntity) and CRUD patterns (datagrids, form extensions). This aligns well with Akeneo’s modular, entity-driven approach but limits portability to non-Akeneo PHP/Laravel ecosystems.menu.yml, datagrid.yml). While Laravel supports Symfony components (e.g., via symfony/console), full compatibility requires bridging gaps (e.g., Doctrine → Eloquent, YAML → PHP arrays).| Risk Area | Severity | Mitigation Strategy |
|---|---|---|
| Doctrine → Eloquent | High | Use Doctrine Bridge or rewrite models. |
| YAML Configs | Medium | Convert to PHP/Laravel config files. |
| Akeneo API Dependency | High | Abstract PIM-specific logic via adapters. |
| Asset Pipeline | Medium | Replace Webpack with Laravel Mix/Vite. |
| Testing Complexity | High | Adopt PestPHP + Laravel Dusk for UI. |
AbstractCustomEntity with Laravel models).| Akeneo Component | Laravel Equivalent | Notes |
|---|---|---|
AbstractCustomEntity |
Eloquent Model + Traits | Extend Illuminate\Database\Eloquent\Model with custom logic. |
| Doctrine ORM | Eloquent or Doctrine Bridge | Prefer Eloquent for simplicity; use Doctrine only if needed. |
| Symfony Form Component | Livewire or Nova Resources | Livewire for dynamic forms; Nova for admin panels. |
| YAML Configs | PHP/Laravel Config Files | Convert menu.yml → config/menu.php. |
| Batch Jobs | Laravel Queues + Jobs | Replace akeneo:batch with php artisan queue:work. |
| Datagrids | Laravel DataTables + Scout | Use yajra/laravel-datatables for grids + Laravel Scout for search. |
| Twig Templates | Blade/Inertia.js | Migrate UI to Laravel’s ecosystem. |
| Akeneo API | Custom API Controllers | If using PIM, wrap Akeneo API calls in Laravel services. |
CustomEntityAdapter for Eloquent).// Akeneo: AbstractCustomEntity
// Laravel: CustomEntity extends Model
class CustomEntity extends Model {
use HasUuids; // Akeneo uses UUIDs; Laravel can adopt this.
}
# Akeneo: menu.yml
extensions:
acme-menu-supplier:
module: pim/menu/item
// Laravel: config/menu.php
return [
'supplier' => [
'title' => 'Supplier',
'route' => 'suppliers.index',
],
];
// Livewire CRUD for CustomEntity
class SupplierManager extends Component {
public function create() { ... }
public function update() { ... }
}
csv_reference_data_quick_export with a Laravel Job:
class ExportReferenceData implements ShouldQueue {
public function handle() {
// Use Laravel Excel or custom CSV logic
}
}
composer require pestphp/pest --dev
./vendor/bin/pest
symfony/console, symfony/yaml, etc.AbstractCustomEntity with Eloquent models.// app/Models/CustomEntity.php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class CustomEntity extends Model {
protected $fillable = ['code', 'name'];
}
CustomEntityAdapter) add complexity.How can I help you explore Laravel packages today?