Skip to content

Modul-Routes

Für jedes Modul können eigene Routes (sowohl Web- als auch API-Routes) definiert werden, die auf die entsprechenden Funktionsbereiche des Moduls verweisen.

Definition eigener Web- und API-Routes

Angenommen unser Modul heißt MyTestModule (Alias my-test-module) ist unter modules\[Modulkategorie]\MyTestModule zu finden. Im Unterordner routes können zwei Route-Dateien erstellt werden, die jeweils die eigene Routes definieren:

Web-Routes

modules/[Modulkategorie]/MyTestModule/routes/my-test-module.web.php:

php
// Beispiel-Web-Route in meiner Modul-Datei
Route::get('/test', function () {
    return "Kleiner Test";
});

Diese Route ist automatisch dem Route-Namespace modules/my-test-module zugeordnet. Die Route hätte also die URL modules/my-test-module/test zugewiesen.

Dies kann nach php artisan optimize und php artisan route:list überprüft werden.

API-Routes

modules/[Modulkategorie]/MyTestModule/routes/my-test-module.api.php

php
// Beispiel-API-Route in meiner Modul-Datei
Route::get('/api-test', function () {
    return "Kleiner API-Test";
});

Diese Route ist automatisch dem Route-Namespace api/modules/my-test-module zugeordnet. Die Route hätte also die URL api/modules/my-test-module/api-test zugewiesen.

Core-Routes

Um eine Route nicht dem Modul-Route-Namespace zuzuordnen und damit auf das präfix modules/my-test-module zu verzichten, kann im routes-Ordner eine Core-Routes-Datei erstellt werden. Im vorgestellten Fall ist dies:

modules/[Modulkategorie]/MyTestModule/routes/my-test-module.core.php

php
// Beispiel-Core-Route in meiner Modul-Datei
Route::get('/start-my-test-module', function () {
    return "Core-Route ohne Präfix";
});

Diese Route hat dann keinen spezifischen Route-Namespace und ist unter der URL /start-my-test-module erreichbar. Alle *.core.php-Dateien werden automatisch über den RouteServiceProvider zusammen mit (bzw. in zeitlicher Reihenfolge unmittelbar nach) den Hermeneus-Core-Routes geladen.

Achtung: Die in Modul-Core-Dateien definierten Routes können Hermeneus-Core-Routes überschreiben, wenn diese gleichnamig sind. Lege ich eine Route in /modules/[Modulkategorie]/MyTestModule/routes/my-test-module.core.php an, die gleichnamig ist wie eine Route in /routes/web.php, ist die in /routes/web.php definierte Route nicht mehr erreichbar.