Zum Hauptinhalt springen

Module

Super Admin → Modules zeigt den Status aller benutzerdefinierten Module, die in Ihrer LeadHub-Installation registriert sind.

LeadHub wird ohne integrierte Funktionsmodule ausgeliefert — das Modulsystem ist ein Erweiterungspunkt für Entwickler, der es Ihnen ermöglicht, neue Funktionen zur Plattform hinzuzufügen, ohne den Kern-Code zu berühren.


Was ist das Modulsystem?​

LeadHub verwendet nWidart/laravel-modules, um eine HMVC (Hierarchical Model-View-Controller)-Architektur zu implementieren.

HMVC organisiert Code in eigenständige Module, jedes mit eigenen Routen, Controllern, Modellen, Views, Migrationen und Service-Provider — im Wesentlichen eine Mini-Laravel-Anwendung, die in die Hauptanwendung geladen wird. Das bedeutet:

  • Sie können völlig neue Funktionen (neue UI-Bereiche, neue API-Endpunkte, neue Hintergrundjobs) hinzufügen, ohne den Kern zu bearbeiten.
  • Module können zur Laufzeit über das Super-Admin-Panel oder über modules_statuses.json aktiviert oder deaktiviert werden.
  • Jedes Modul wird unabhängig versioniert und kann Abhängigkeiten von anderen Modulen deklarieren.

Installation (bereits in LeadHub enthalten)​

Das Paket ist bereits in LeadHub installiert und konfiguriert. Zur Überprüfung:

composer show nwidart/laravel-modules

Die Modulkonfiguration befindet sich in config/modules.php und die Module werden unter Modules/ im Projektstammverzeichnis gespeichert.


Ihr erstes Modul erstellen​

# Ein neues Modul generieren
php artisan module:make MyFeature

# Mehrere Module auf einmal generieren
php artisan module:make ModuleA ModuleB ModuleC

# Ohne Standard-Boilerplate-Dateien generieren (absolutes Minimum)
php artisan module:make MyFeature --plain

Nach der Ausführung von module:make wird Ihr Modul unter Modules/MyFeature/ erstellt und automatisch registriert.


Generierte Modulstruktur​

Modules/
MyFeature/
app/
Http/
Controllers/ # Routen-Controller
Middleware/ # Modulbezogene Middleware
Requests/ # Formular-Request-Klassen
Models/ # Eloquent-Modelle
Providers/
MyFeatureServiceProvider.php # Haupt-Service-Provider (automatisch geladen)
RouteServiceProvider.php # Lädt routes/web.php + routes/api.php
config/
config.php # Konfiguration auf Modulebene
database/
migrations/ # Modulmigrationen (vom Kern isoliert)
seeders/
factories/
resources/
views/ # Blade-Templates
lang/ # Übersetzungsstrings
assets/ # JS/CSS (kompiliert über Vite)
routes/
web.php # Web-Routen (geladen unter der Middleware-Gruppe 'web')
api.php # API-Routen (geladen unter der Middleware-Gruppe 'api')
tests/ # Funktions- und Unit-Tests
module.json # Modulmetadaten und Abhängigkeitsdeklaration
composer.json # PSR-4-Autoloading für den Namespace dieses Moduls

Erläuterung der wichtigsten Dateien​

module.json​

Definiert die Identität des Moduls und die Ladereihenfolge:

{
"name": "MyFeature",
"alias": "myfeature",
"description": "Adds custom feature X to LeadHub",
"keywords": [],
"priority": 0,
"providers": [
"Modules\\MyFeature\\Providers\\MyFeatureServiceProvider"
],
"requires": []
}
  • priority — steuert die Ladereihenfolge; eine niedrigere Zahl wird zuerst geladen. Verwenden Sie dies, wenn Ihr Modul von einem anderen abhängt.
  • requires — Liste der Modul-Aliase, von denen dieses Modul abhängt. LeadHub erzwingt die Abhängigkeit vor dem Laden.

MyFeatureServiceProvider.php​

Der Einstiegspunkt Ihres Moduls. Registrieren Sie hier Routen, Middleware, Views, Übersetzungen und Bindungen. Der generierte Provider ruft bereits RouteServiceProvider auf und registriert automatisch die Views und Übersetzungen des Moduls.

config/config.php​

Konfiguration auf Modulebene. Zugriff über:

config('myfeature.some_key');

Veröffentlichen und überschreiben Sie die Konfiguration pro Umgebung mithilfe der standardmäßigen Laravel-Konfigurationsveröffentlichung.


Häufig verwendete Artisan-Generatoren​

# Controller, Modelle, Migrationen
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

# Artisan-Befehle
php artisan module:make-command MyCommand MyFeature

Migrationen und Seeds ausführen​

Modulmigrationen werden getrennt vom Kern aufbewahrt. Führen Sie sie unabhängig aus:

# Alle Module migrieren
php artisan module:migrate

# Ein bestimmtes Modul migrieren
php artisan module:migrate MyFeature

# Zurücksetzen
php artisan module:migrate-rollback MyFeature

# Seed
php artisan module:seed MyFeature

Module aktivieren und deaktivieren​

Über die Befehlszeile:

php artisan module:enable MyFeature
php artisan module:disable MyFeature
php artisan module:list # zeigt alle Module und ihren Status an

Über Super Admin → Modules: verwenden Sie den Schalter neben jedem registrierten Modul.

Der Modulstatus wird in modules_statuses.json im Projektstammverzeichnis gespeichert — committen Sie diese Datei in die Versionskontrolle.


Mandantenfähigkeit (Multi-Tenant)​

LeadHub ist mandantenfähig. Beachten Sie beim Erstellen von Modulen Folgendes:

  • Mandantenbezogene Migrationen: kapseln Sie module:migrate in einem Mandantenkontext, wenn Ihre Migration Tabellen auf Mandantenebene erstellt.
  • Service-Provider-Isolation: registrieren Sie Middleware, Richtlinien und Event-Listener innerhalb des Service-Providers des Moduls, um den globalen Gültigkeitsbereich nicht zu verunreinigen.
  • Funktionssteuerung: kombinieren Sie den Aktivierungs-/Deaktivierungsschalter des Moduls mit dem Plans-System von LeadHub — deaktivieren Sie ein Modul global, oder beschränken Sie es auf bestimmte Plan-Stufen.

Verwandte Themen​