Die ModuleRegistry
Die ModuleRegistry ist eine zentrale API, die alle Informationen zur Verwendung der Module bereitstellt. In ihr sind alle Module nach entsprendedem Alias registriert. Dort sind auch die Daten verfügbar, die in der module.json definiert wurden.
Im Backend ist sie unter app\Registries\ModuleRegistry\ModuleRegistry.php zu finden.
Wie ist die ModuleRegistry aufgebaut?
Datenstruktur im Backend
Im Backend ist die ModuleRegistry ein Singleton-Objekt., das die Einträge modules und moduleConfigs als Array enthält:
dd(app('module_registry'));erzeugt folgenden Output:
{
"modules": [
"uebung-activitas" => "\Pfad\zu\uebung-activitas",
...
],
"moduleConfigs": [
"uebung-activitas" => [
// Array von Werten
],
...
]
}Wesentlich sinnvoller ist es, den Getter zu verwenden:
dd(app('module_registry')->get());erzeugt folgenden Output:
[
"uebung-activitas" => [
// Array von Werten
],
]Datenstruktur im Frontend
Im Frontend ist die ModuleRegistry ein Objekt mit dem Modul-Alias als Key und dem Modul als Value in Objektform:
// In einer Vue-Komponente:
console.log(this.$ModuleRegistry);erzeugt folgenden Output:
{
"uebung-activitas": {
// Objekt mit sämtlichen Modul-Informationen als Einträge
},
// weitere Module ...
}Welche Modul-Daten sind in der ModuleRegistry zu einem bestimmten Modulverfügbar?
Der Moduleintrag zu einem Modul in ModuleRegistry enthält im Grunde die Werte, die auch in der module.json definiert wurden und weitere Parameter.
Hier sind die Werte für das Modul uebung-activitas im Frontend:
// In einer Vue-Komponente:
console.log(this.$ModuleRegistry.get('uebung-activitas'));Dies erzeugt folgenden Output:
{
"module_title": "UebungActivitas",
"module_alias": "uebung-activitas",
"module_category": "Uebungen",
"module_description": "Ein neues Modul, das auf Grundlage von UebungBedeutungenZuordnen erstellt wurde.",
"version": "1.0.0",
"author": "Ihr Name",
"license": "MIT",
"moduleNamespace": "Modules\\Uebungen\\UebungActivitas",
"modelNamespace": "Modules\\Uebungen\\UebungActivitas\\app\\Models",
"module_model": "UebungActivitas",
"controllerNamespace": "Modules\\Uebungen\\UebungActivitas\\app\\Controllers",
"dependencies": [],
"frontend": [],
"module_type": "Uebungen",
"module_path": "C:/DEV/hermeneus/modules/Uebungen/UebungActivitas",
"module_path_rel": "/modules/Uebungen/UebungActivitas"
}