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