dahovitech / module-bundle
Un système de modules pour Symfony 7.3 inspiré de nwidart/laravel-modules
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:symfony-bundle
pkg:composer/dahovitech/module-bundle
Requires
- php: >=8.1
- doctrine/doctrine-bundle: ^2.10
- doctrine/migrations: ^3.6
- doctrine/orm: ^2.15
- symfony/cache: ^7.0
- symfony/config: ^7.0
- symfony/console: ^7.0
- symfony/dependency-injection: ^7.0
- symfony/event-dispatcher: ^7.0
- symfony/filesystem: ^7.0
- symfony/finder: ^7.0
- symfony/framework-bundle: ^7.0
- symfony/yaml: ^7.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- symfony/phpunit-bridge: ^7.0
- symfony/var-dumper: ^7.0
This package is not auto-updated.
Last update: 2025-10-24 15:44:50 UTC
README
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.
🚀 Fonctionnalités
- Auto-découverte des modules : Détection automatique des modules dans votre application
- Gestion des dépendances : Support des dépendances entre modules avec résolution automatique
- Commandes CLI : Outils en ligne de commande pour créer et gérer vos modules
- Intégration Doctrine : Support automatique des entités et migrations par module
- Templates Twig : Namespaces automatiques pour les templates de chaque module
- Cache intelligent : Système de cache pour optimiser les performances
- Tests inclus : Suite de tests complète pour assurer la fiabilité
📋 Prérequis
- PHP 8.1 ou supérieur
- Symfony 7.0 ou supérieur
- Composer
📦 Installation
Via Composer
composer require dahovitech/module-bundle
Enregistrement du Bundle
Ajoutez le bundle dans config/bundles.php :
<?php return [ // ... autres bundles DahoviTech\ModuleBundle\ModuleBundle::class => ['all' => true], ];
Configuration
Créez le fichier config/packages/modules.yaml :
modules: path: '%kernel.project_dir%/modules' auto_discovery: true enabled_modules: [] disabled_modules: []
🏗️ Structure d'un Module
modules/
  ├── Blog/
      ├── config/
          ├── module.yaml
          ├── services.yaml
          └── routes.yaml
      ├── src/
          ├── Controller/
          ├── Entity/
          ├── Repository/
          ├── Service/
          └── Form/
      ├── templates/
      ├── translations/
      ├── tests/
      ├── public/
      ├── migrations/
      └── composer.json
🚀 Démarrage Rapide
1. Créer votre premier module
php bin/console module:make Blog
2. Lister les modules
php bin/console module:list
3. Voir le statut d'un module
php bin/console module:status Blog
4. Générer un contrôleur
php bin/console module:generate:controller Blog PostController --actions=index,show,create,edit --template
📚 Commandes Disponibles
| 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 | 
🔧 Configuration Avancée
Configuration des Modules
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
Services
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}'
Routes
Les routes sont définies dans config/routes.yaml :
blog_index: path: /blog controller: App\Modules\Blog\Controller\BlogController::index methods: [GET]
🧪 Tests
Exécuter les tests :
composer test
Avec couverture :
composer test-coverage
📖 Documentation
- Guide d'installation détaillé
- Création de modules
- Gestion des dépendances
- Intégration Doctrine
- Templates et vues
- Migration depuis d'autres systèmes
🤝 Contribution
Les contributions sont les bienvenues ! Veuillez consulter CONTRIBUTING.md pour plus d'informations.
📄 Licence
Ce projet est sous licence MIT. Voir LICENSE pour plus de détails.
🙏 Remerciements
Ce bundle s'inspire de nwidart/laravel-modules pour Laravel.
📞 Support
Développé avec ❤️ par DahoviTech