alexandrebulete / ddd-sylius-bundle
Sylius Stack Bundle for DDD Foundation - Admin UI, Grid, Resource integration
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/alexandrebulete/ddd-sylius-bundle
Requires
- php: ^8.2
- alexandrebulete/ddd-symfony-bundle: ^1.0
- knplabs/knp-menu-bundle: ^3.0
- sylius/admin-ui: ^0.10
- sylius/bootstrap-admin-ui: ^0.10
- sylius/grid-bundle: ^1.13
- sylius/resource-bundle: ^1.11
README
Sylius Stack Bundle for DDD Foundation. Provides Admin UI menu builder, Grid utilities, and Resource integration.
Installation
composer require alexandrebulete/ddd-sylius-bundle
Configuration
Add the bundle to your config/bundles.php:
return [ // ... AlexandreBulete\DddSyliusBundle\DddSyliusBundle::class => ['all' => true], ];
Structure
src/
├── DddSyliusBundle.php
├── Admin/
│ └── Menu/
│ ├── MenuBuilder.php
│ └── MenuContributorInterface.php
├── Grid/
│ └── GridPageResolver.php
└── Resources/
└── config/
├── services.php
└── sylius_resource.yaml
Features
Menu Builder
The bundle provides a modular menu builder for Sylius Admin UI. Each bounded context can contribute menu items.
Create a Menu Contributor
use AlexandreBulete\DddSyliusBundle\Admin\Menu\MenuContributorInterface; use Knp\Menu\ItemInterface; use Symfony\Component\DependencyInjection\Attribute\AutoconfigureTag; #[AutoconfigureTag('app.menu_contributor')] final readonly class PostMenuContributor implements MenuContributorInterface { public function contribute(ItemInterface $menu): void { $menu ->addChild('posts', [ 'route' => 'app_admin_post_index', ]) ->setLabel('Posts') ->setLabelAttribute('icon', 'tabler:article'); } }
Grid Page Resolver
Utility for resolving pagination parameters from Grid and Request:
use AlexandreBulete\DddSyliusBundle\Grid\GridPageResolver; $page = GridPageResolver::getCurrentPage($grid, $parameters); $itemsPerPage = GridPageResolver::getItemsPerPage($grid, $parameters);
Sylius Resource Configuration
Configure resource mapping for your bounded contexts:
# config/packages/sylius_resource.yaml sylius_resource: mapping: paths: - '%kernel.project_dir%/src/*/Infrastructure/Sylius/Resource'
Example: Full Bounded Context Setup
src/Post/
├── Domain/
│ └── Model/Post.php
├── Infrastructure/
│ ├── Sylius/
│ │ ├── Resource/
│ │ │ └── PostResource.php
│ │ └── Grid/
│ │ └── PostGrid.php
│ └── Symfony/
│ └── Menu/
│ └── PostMenuContributor.php