cracker182's blog

Programmieren / Technologie / Musik

Larvel 101 - Routen Teil 2

1 year ago · 1 MIN READ
#laravel  #tutorials 

Im letzten Teil habe ich die Grundlagen des Routings in Laravel vorgestellt. Allerdings kann der Router weitaus mehr als dort gezeigt. In diesem Teil möchte ich weitere FUnktionen und Konzepte des Routings vorstellen.

Routing zu einem Controller

Im Normalfall möchte man beim besuch einer URL eine gewisse Aktion auslösen. Diese Aktionen werden in einen sog. Controller geschrieben. Wie so ein Controller funktioniert erkläre ich in einem anderen Teil.

Wie steuert man nun diese Controllerfuktion an? Laravel macht es auch hier wieder sehr einfach: Man muss nur die gewünschte Controllerfunktion als Übergabeparameter der entsprechenden Route mitgeben. Dies geschieht nach folgendem Schema:

Route::get('/ROUTE,  'CONTROLLERNAME@CONTROLLERFUNKTION');:

Angenommen es würde ein HomeController existieren, welcher eine index-Methode hat, dann würde die ROute wie folgt definiert werden:

Route::get('/home', 'HomeController@index);
// Wenn  ein "get-Request" auf "home" erfolgt, dann führe die Methode "index" vom "HomeController" aus

Routing-Gruppen

Hat man beispielsweise eine Userverwaltung, dann würde die URL zu dieser .../useradministration sein. Diese Verwaltung könnte verschiedene Unterpunkte haben.

.../useradministration/new/
.../useradministration/edit/
..../useradministration/delete/

Die routes/web.php würde dann ungefähr so aussehen:

Route::get('useradministration/new', 'UseradminController@new');
Route::get('useradministration/edit/{id}', 'UseradminController@edit); // {id} hier erstmal ignorieren, Erklärung kommt später.
Route::get('useradministration/delete/{id}', 'UseradminController@delete);

Man sieht, dass sich der Teil useradministration/ immer wiederholt. Genau für solche Fälle hat Laravel eine nette Router-Methode ´Route::group´. Hiermit kann man die Lesbarkeit und die Wartbarkeit seiner web.php enorm steigern. Das Beispiel von oben ließe sich mit Route::group wie folgt vereinfachen:

Route::group(['/useradministration', function(){
    Route::get('/new', 'UseradminController@new);
    Route::get('/edit/{id}', 'UseradminController@edit);
    Route::get('/delete/{id}', 'UseradminController@delete);
]);

Würde sich beispielsweise die Adresse useradministration in 'useradmin' ändern, müsste man nicht drei Einträge ändern, sondern nur einen. Außerdem kann man diesen gruppen auch ganz bequem middleware zuordnen. Dazu in einem anderem Teil mehr.

Das soll es für heute gewesen sein.

···

Dennis Lange


comments powered by Disqus


Proudly powered by Canvas · Sign In