Un système de modules pour Symfony 7.3 inspiré de nwidart/laravel-modules, permettant de structurer votre application en modules indépendants et réutilisables.
composer require dahovitech/module-bundle
Ajoutez le bundle dans config/bundles.php :
<?php
return [
// ... autres bundles
DahoviTech\ModuleBundle\ModuleBundle::class => ['all' => true],
];
Créez le fichier config/packages/modules.yaml :
modules:
path: '%kernel.project_dir%/modules'
auto_discovery: true
enabled_modules: []
disabled_modules: []
modules/
├── Blog/
├── config/
├── module.yaml
├── services.yaml
└── routes.yaml
├── src/
├── Controller/
├── Entity/
├── Repository/
├── Service/
└── Form/
├── templates/
├── translations/
├── tests/
├── public/
├── migrations/
└── composer.json
php bin/console module:make Blog
php bin/console module:list
php bin/console module:status Blog
php bin/console module:generate:controller Blog PostController --actions=index,show,create,edit --template
| Commande | Description |
|---|---|
module:make <name> |
Créer un nouveau module |
module:list |
Lister tous les modules |
module:status [name] |
Afficher le statut des modules |
module:enable <name> |
Activer un module |
module:disable <name> |
Désactiver un module |
module:generate:controller |
Générer un contrôleur |
Chaque module peut être configuré via son fichier config/module.yaml :
name: Blog
description: "Module de gestion de blog"
version: "1.0.0"
dependencies:
- User
- Core
auto_enable: true
environments:
- dev
- prod
- test
Les services sont définis dans config/services.yaml du module :
services:
_defaults:
autowire: true
autoconfigure: true
App\Modules\Blog\:
resource: '../src/*'
exclude: '../src/{Entity,Tests}'
Les routes sont définies dans config/routes.yaml :
blog_index:
path: /blog
controller: App\Modules\Blog\Controller\BlogController::index
methods: [GET]
Exécuter les tests :
composer test
Avec couverture :
composer test-coverage
Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md pour plus d'informations.
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
Ce bundle s'inspire de nwidart/laravel-modules pour Laravel.
Développé avec ❤️ par DahoviTech
How can I help you explore Laravel packages today?