Skip to content

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:

php
// ModuleRegistry als assoziatives Array abrufen
$ModuleRegistry = app('module_registry')->get();

Einzelnes Modul bzw. Modul-Informationen abrufen

php
// 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:

php
// 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:

php
<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:

html
@module('mein-modul')
    <div>Dies wird nur angezeigt, wenn das Modul erfolgreich registriert wurde.</div>
@endmodule

Modul-Pfad abrufen

Mit der Helper-Funktion module_path lässt sich einfach den Modul-Pfad abrufen:

php
// 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:

js
// 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:

js
// 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:

js
const ModuleRegistry = await this.$fetchModuleRegistry();

Es gibt ein global Property, um die Existenz eines Moduls zu prüfen:

js
if (this.$moduleExists('my-module')) {
    console.error("Das Modul existiert nicht!")
}

Dies kann jedoch auch mit einer Vue-Directive überprüft werden:

html
<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:

js
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.