Modules
Super Admin → Modules affiche l'état de tous les modules personnalisés enregistrés sur votre installation LeadHub.
LeadHub ne fournit aucun module de fonctionnalités intégré — le système de modules est un point d'extension pour les développeurs qui vous permet d'ajouter de nouvelles fonctionnalités à la plateforme sans toucher au code source principal.
Qu'est-ce que le système de modules ?
LeadHub utilise nWidart/laravel-modules pour implémenter une architecture HMVC (Hierarchical Model-View-Controller).
HMVC organise le code en modules autonomes, chacun possédant ses propres routes, contrôleurs, modèles, vues, migrations et fournisseur de services — essentiellement une mini-application Laravel chargée dans l'application principale. Cela signifie que :
- Vous pouvez ajouter de nouvelles fonctionnalités (nouvelles sections d'interface, nouveaux points de terminaison API, nouveaux traitements en arrière-plan) sans modifier le noyau.
- Les modules peuvent être activés ou désactivés à l'exécution depuis le panneau Super Admin, ou via
modules_statuses.json. - Chaque module est versionné indépendamment et peut déclarer des dépendances envers d'autres modules.
Installation (déjà incluse dans LeadHub)
Le package est déjà installé et configuré dans LeadHub. Pour vérifier :
composer show nwidart/laravel-modules
La configuration du module se trouve dans config/modules.php et les modules sont stockés dans Modules/ à la racine du projet.
Création de votre premier module
# Générer un nouveau module
php artisan module:make MyFeature
# Générer plusieurs modules à la fois
php artisan module:make ModuleA ModuleB ModuleC
# Générer sans les fichiers de structure par défaut (minimum requis)
php artisan module:make MyFeature --plain
Après l'exécution de module:make, votre module est créé dans Modules/MyFeature/ et enregistré automatiquement.
Structure générée du module
Modules/
MyFeature/
app/
Http/
Controllers/ # Contrôleurs de routes
Middleware/ # Middleware limité au module
Requests/ # Classes de requêtes de formulaire
Models/ # Modèles Eloquent
Providers/
MyFeatureServiceProvider.php # Fournisseur de services principal (chargé automatiquement)
RouteServiceProvider.php # Charge routes/web.php + routes/api.php
config/
config.php # Configuration au niveau du module
database/
migrations/ # Migrations du module (isolées du noyau)
seeders/
factories/
resources/
views/ # Templates Blade
lang/ # Chaînes de traduction
assets/ # JS/CSS (compilé via Vite)
routes/
web.php # Routes web (chargées sous le groupe de middleware 'web')
api.php # Routes API (chargées sous le groupe de middleware 'api')
tests/ # Tests fonctionnels et unitaires
module.json # Métadonnées du module et déclaration des dépendances
composer.json # Autoloading PSR-4 pour l'espace de noms de ce module
Description des fichiers clés
module.json
Définit l'identité du module et l'ordre de chargement :
{
"name": "MyFeature",
"alias": "myfeature",
"description": "Adds custom feature X to LeadHub",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\MyFeature\\Providers\\MyFeatureServiceProvider"
],
"requires": []
}
priority— contrôle l'ordre de chargement ; un nombre plus petit est chargé en premier. Utilisez ceci lorsque votre module dépend d'un autre.requires— liste des alias de modules dont ce module dépend. LeadHub vérifiera la dépendance avant le chargement.
MyFeatureServiceProvider.php
Le point d'entrée de votre module. Enregistrez les routes, le middleware, les vues, les traductions et les liaisons ici. Le fournisseur généré appelle déjà RouteServiceProvider et enregistre automatiquement les vues et les traductions du module.
config/config.php
Configuration au niveau du module. Accédez-y avec :
config('myfeature.some_key');
Publiez et remplacez par environnement en utilisant la publication de configuration standard de Laravel.
Générateurs Artisan courants
# Contrôleurs, Modèles, Migrations
php artisan module:make-controller MyController MyFeature
php artisan module:make-model MyModel MyFeature
php artisan module:make-migration create_my_table MyFeature
# Requests, Middleware, Policies
php artisan module:make-request StoreMyRequest MyFeature
php artisan module:make-middleware CheckSomething MyFeature
php artisan module:make-policy MyPolicy MyFeature
# Jobs, Events, Listeners, Mail
php artisan module:make-job ProcessSomething MyFeature
php artisan module:make-event SomethingHappened MyFeature
php artisan module:make-listener HandleSomething MyFeature
php artisan module:make-mail WelcomeMail MyFeature
# Commandes Artisan
php artisan module:make-command MyCommand MyFeature
Exécution des migrations et des seeds
Les migrations des modules sont conservées séparément du noyau. Exécutez-les indépendamment :
# Migrer tous les modules
php artisan module:migrate
# Migrer un module spécifique
php artisan module:migrate MyFeature
# Annuler
php artisan module:migrate-rollback MyFeature
# Seeder
php artisan module:seed MyFeature
Activation et désactivation des modules
Depuis la ligne de commande :
php artisan module:enable MyFeature
php artisan module:disable MyFeature
php artisan module:list # affiche tous les modules et leur état
Depuis Super Admin → Modules : utilisez le bouton bascule à côté de chaque module enregistré.
L'état du module est persisté dans modules_statuses.json à la racine du projet — committez ce fichier dans le contrôle de version.
Considérations multi-tenant
LeadHub est multi-tenant. Lors de la création de modules, gardez à l'esprit :
- Migrations limitées au tenant : encapsulez
module:migratedans un contexte de tenant si votre migration crée des tables au niveau du tenant. - Isolation du fournisseur de services : enregistrez le middleware, les politiques et les écouteurs d'événements à l'intérieur du fournisseur de services du module pour éviter de polluer la portée globale.
- Contrôle des fonctionnalités : combinez le bouton bascule d'activation/désactivation du module avec le système de Plans de LeadHub — désactivez un module globalement, ou limitez-le à des niveaux de plans spécifiques.
Voir aussi
- Plans — contrôlez les fonctionnalités disponibles par niveau d'abonnement
- System Health — surveillez l'état de chargement des modules et les erreurs
- nWidart/laravel-modules documentation — référence complète du package