Projects [SHOW]
01. Routing
Basic Routing
Die einfachsten Laravel-Routen akzeptieren eine URI und einen Closure und bieten eine sehr einfache und ausdrucksstarke Methode zur Definition von Routen:
Route::get('foo', function () {
return 'Hello World';
});
The Default Route Files
Alle Laravel-Routen sind in Ihren Routendateien definiert, die sich im Routenverzeichnis befinden. Diese Dateien werden vom Framework automatisch geladen. Die Datei routes/web.php definiert Routen, die für Ihre Weboberfläche bestimmt sind. Diesen Routen wird die Web-Middleware-Gruppe zugeordnet, die Funktionen wie Sitzungsstatus und CSRF-Schutz bietet. Die Routen in routes/api.php sind zustandslos und werden der api Middleware-Gruppe zugeordnet.
Für die meisten Anwendungen werden Sie zunächst Routen in Ihrer Datei routes/web.php definieren. Auf die in routes/web.php definierten Routen kann durch Eingabe der URL der definierten Route in Ihrem Browser zugegriffen werden. Sie können beispielsweise die folgende Route aufrufen, indem Sie in Ihrem Browser zu http://your-app.test/user navigieren:
Route::get('/user', 'UserController@index');
Die in der Datei routes/api.php definierten Routen werden vom RouteServiceProvider in eine Routengruppe verschachtelt. Innerhalb dieser Gruppe wird das Präfix /api URI automatisch angewendet, so dass Sie es nicht auf jede Route in der Datei manuell anwenden müssen. Sie können das Präfix und andere Optionen für Routengruppen ändern, indem Sie Ihre RouteServiceProvider-Klasse ändern.
Available Router Methods
Der Router ermöglicht es Ihnen, Routen zu registrieren, die auf ein beliebiges HTTP-Verb reagieren:
Route::get($uri, $callback);
Route::post($uri, $callback);
Route::put($uri, $callback);
Route::patch($uri, $callback);
Route::delete($uri, $callback);
Route::options($uri, $callback);
Manchmal müssen Sie eine Route registrieren, die auf mehrere HTTP-Verben reagiert. Sie können dies mit der Match-Methode tun. Oder Sie können sogar eine Route registrieren, die auf alle HTTP-Verben mit der Any-Methode reagiert:
Route::match(['get', 'post'], '/', function () {
//
});
Route::any('/', function () {
//
});
CSRF Protection
Alle HTML-Formulare, die auf POST-, PUT- oder DELETE-Routen verweisen, die in der Datei web routes definiert sind, sollten ein CSRF-Token-Feld enthalten. Andernfalls wird der Antrag abgelehnt. Weitere Informationen zum Thema CSRF-Schutz finden Sie in der CSRF-Dokumentation:
<form method="POST" action="/profile">
@csrf
...
</form>
Redirect Routes
Wenn Sie eine Route definieren, die auf eine andere URI umgeleitet wird, können Sie die Methode Route::redirect verwenden. Diese Methode bietet eine praktische Abkürzung, so dass Sie keine vollständige Route oder Steuerung für eine einfache Umleitung definieren müssen:
Route::redirect('/here', '/there');
Standardmäßig gibt Route::redirect einen 302 Statuscode zurück. Sie können den Statuscode mit dem optionalen dritten Parameter anpassen:
Route::redirect('/here', '/there', 301);
Sie können die Methode Route::permanentRedirect verwenden, um einen 301-Statuscode zurückzugeben:
Route::permanentRedirect('/here', '/there');
View Routes
Wenn Ihre Route nur eine Ansicht zurückgeben muss, können Sie die Methode Route::view verwenden. Wie die Redirect-Methode bietet auch diese Methode eine einfache Verknüpfung, so dass Sie keine vollständige Route oder Controller definieren müssen. Die View-Methode akzeptiert eine URI als erstes Argument und einen View-Namen als zweites Argument. Darüber hinaus können Sie als optionales drittes Argument ein Array von Daten bereitstellen, die an die View übergeben werden sollen:
Route::view('/welcome', 'welcome');
Route::view('/welcome', 'welcome', ['name' => 'Taylor']);