sonata-project/ecommerce
Symfony-based e-commerce platform from Sonata, offering a full shopping stack with product catalog, orders, payments, shipping, customer accounts, admin backend, and integrations. Built for extensibility and customization in complex commerce projects.
ManagerRegistry update (PR #773), reducing Doctrine-related BC breaks.ManagerRegistry (used in Laravel’s DoctrineBridge).RegistryInterface → ManagerRegistry) may introduce subtle Laravel conflicts (e.g., service container overlaps).ManagerRegistry change is a good sign for DoctrineBridge compatibility, but other Symfony components (e.g., EventDispatcher, Validator) may still conflict.symfony/http-foundation, symfony/routing) for core functionality.ManagerRegistry change may help but doesn’t eliminate migration effort.| Risk Area | Severity | Mitigation | Update Due to 3.5.2 |
|---|---|---|---|
| Abandoned Maintenance | High | Fork the repo, backport fixes, or replace deprecated components. | No change. |
| PHP/Symfony Version | Medium | Test compatibility with PHP 8.2+ and Symfony 6.x via Docker/Laravel Sail. | Reduced: ManagerRegistry BC fix helps. |
| Admin Panel Conflicts | Medium | Abstract SonataAdmin logic or replace with Laravel-native. | No change. |
| Performance Overhead | Medium | Profile with Laravel Telescope; optimize Doctrine queries. | No change. |
| Security Vulnerabilities | High | Audit dependencies (composer audit), patch known CVEs. |
No change. |
| Symfony-Laravel Interop | Medium | Use service bindings to resolve overlaps (e.g., EventDispatcher). |
Increased: ManagerRegistry change may expose other conflicts. |
ManagerRegistry change is a minor BC fix, not a strategic update. Is the feature gap (e.g., headless API, modern UX) still critical?ManagerRegistry stabilized, Doctrine integration is slightly less risky. Test this first.ManagerRegistry change affect event listeners, validators, or other Symfony services?ManagerRegistry BC fix improves DoctrineBridge compatibility.EventDispatcher, Validator) may still conflict.| Phase | Actions | Tools/Dependencies | Update Due to 3.5.2 |
|---|---|---|---|
| Assessment | Audit codebase, document dependencies, focus on ManagerRegistry usage. |
composer why, phpstan, depfu |
Add: Test ManagerRegistry integration. |
| Isolation | Containerize Sonata in a Laravel microservice to test DoctrineBridge compatibility. | Laravel Sail, Docker Compose | Priority: Test this phase first. |
| Incremental Replacement | Replace non-core modules (e.g., cart → laravel-shoppingcart). |
Composer patches, custom adapters | No change. |
| Core Integration | Integrate Sonata’s order/product models into Laravel’s Eloquent ORM. | DoctrineBridge, Eloquent Model Factories | Focus: ManagerRegistry entities first. |
| Admin Panel | Replace SonataAdmin with Filament or Nova while reusing business logic. | Filament Admin, Laravel Nova | No change. |
| Frontend | Migrate Twig templates to Blade/Inertia.js; modernize JS. | Inertia.js, Vite, Alpine.js | No change. |
| Testing | Write Pest/Laravel tests for critical flows (checkout, payments). | Pest, Laravel Dusk | Add: Test ManagerRegistry edge cases. |
ManagerRegistry is now less likely to conflict, but other services (e.g., EventDispatcher) may still overlap.bind() method to resolve overlaps:
$this->app->bind(
\Symfony\Component\EventDispatcher\EventDispatcherInterface::class,
\Illuminate\Events\Dispatcher::class
);
CacheInterface → Laravel’s Cache facade (unchanged).trans() → Laravel’s __() (unchanged).FormRequest (unchanged).ManagerRegistry compatibility.ManagerRegistry entities first (e.g., Product, Order).ManagerRegistry BC fix reduces some Doctrine-related risks, but other Symfony conflicts remain.composer.lock) to avoid breakage.How can I help you explore Laravel packages today?