Zugriff auf Module
Über die ModuleRegistry werden verschiedene Methoden bereitgestellt, um auf Module und Modulinformationen zuzugreifen.
Zugriff im Backend
Gesamte ModuleRegistry abrufen
Im Laravel-Backend kann die ModuleRegistry einfach aufgerufen werden:
// ModuleRegistry als assoziatives Array abrufen
$ModuleRegistry = app('module_registry')->get();Einzelnes Modul bzw. Modul-Informationen abrufen
// Einzelne Modul-Informationen abrufen
$ModuleConfig = app('module_registry')->getModule('module-alias');Existenz und Aktivierungsstatus eines Moduls prüfen
Mit der Helper-Funktion module_exists lassen sich einfach prüfen, ob ein Modul existiert:
// Prüfen, ob ein Modul existiert
module_exists('module-alias');Zugriff in den Blade-Views
Die Module-Registry kann auch direkt in Blade-Views verwendet werden:
<div>
{{ $module_registry }}
</div>Die Variable $module_registry wird durch einen ViewComposer in app\Providers\ViewComposerServiceProvider.php definiert.
Für jedes Modul werden außerdem automatisch Blade-Direktiven generiert:
@module('mein-modul')
<div>Dies wird nur angezeigt, wenn das Modul erfolgreich registriert wurde.</div>
@endmoduleModul-Pfad abrufen
Mit der Helper-Funktion module_path lässt sich einfach den Modul-Pfad abrufen:
// Modul-Pfad abrufen
$module_path = module_path('module-alias');Zugriff im Vue-Frontend
Über Global Properties läßt sich die ModuleRegistry in jeder Vue-Komponente mit this.$ModuleRegistry abrufen:
// Ausgabe der Modul-Registry beim Mounten einer Vue-Komponente
mounted() {
console.log(this.$ModuleRegistry);
}Um ein spezielles Modul zu laden, kann die get-Methode mit dem Modul-Alias verwendet werden:
// Lädt in Vue ein Modul aus der ModuleRegistry
let MyModule = this.$ModuleRegistry.get('my-module');Per Global-Properties-Methode kann man die ModuleRegistry erneut per Request vom Backend abrufen:
const ModuleRegistry = await this.$fetchModuleRegistry();Es gibt ein global Property, um die Existenz eines Moduls zu prüfen:
if (this.$moduleExists('my-module')) {
console.error("Das Modul existiert nicht!")
}Dies kann jedoch auch mit einer Vue-Directive überprüft werden:
<div v-module-exists="'my-module'">
Das Modul wird nicht angezeigt, wenn es nicht existiert.
</div>Weitere Möglichkeiten im Frontend
Außerhalb von Vue ist die Modul-Registry ebenfalls verfügbar:
const ModuleRegistry = window.ModuleRegistry;Achtung! Dies funktioniert nur in Blade-Views, die den Partial master\__global-module-registry.blade.php verwenden. Dieser ist jedoch in allen Blade-Views, die master\index.blade.php oder master\index_min.blade.php extenden, inkludiert.