Wie implementiert man eine 404-Seite? Es gibt tatsächlich viele Methoden. In diesem Artikel erfahren Sie, wie Sie das Laravel 5.5+-Framework verwenden, um die 404-Antwort besser zu implementieren.
Laravel 5.5.10 umfasst zwei nützliche Router-Methoden, die uns helfen können, unseren Benutzern bessere 404-Seiten bereitzustellen. Wenn nun eine 404-Ausnahme ausgelöst wird, zeigt Laravel eine schöne 404.blade.php-Ansichtsdatei an, die Sie anpassen können, um sie auf der Benutzeroberfläche anzuzeigen, aber in dieser Ansicht haben Sie keinen Zugriff auf Sitzung, Cookie, Authentifizierung (Authentifizierung) usw...
In Laravel 5.5.10 haben wir eine neue Route::fallback() Methode zum Definieren der Route, auf die Laravel zurückgreift, wenn keine andere Route der Anfrage entspricht.
Route::fallback(function () { return 'Sorry' . auth()->user()->name . '! This page does not exist.'; });
Jetzt können wir also ein App-Layout mit einer normalen Seite und Fußzeile anstelle einer einfachen 404-Ansicht verwenden und dem Benutzer dennoch eine freundliche Nachricht anzeigen.
Route::fallback(function() { return response()->view('notFound', [], 404); });
@extends('layout.app') @section('content') <h3>Sorry! this page doesn't exist.</h3> @stop
Wenn Laravel diese Fallback-Route rendert, wird die gesamte Middleware ausgeführt. Wenn Sie also die Fallback-Route in der web.php-Routing-Datei definieren, wird die gesamte Middleware im web Die -Middleware-Gruppe wird ausgeführt, damit wir die Sitzungsdaten erhalten können.
Wenn Sie jetzt auf /non-existing-page klicken, wird die in der Fallback-Route definierte Ansicht angezeigt, auch wenn Sie auf / klicken. api/non-existing-endpoint, wenn Sie diese Schnittstelle nicht bereitstellen möchten, können Sie die JSON-Antwort in der api Fallback-Route definieren. Gehen wir zur api Another Die Fallback-Route ist in der PHP-Routing-Datei definiert:
Route::fallback(function() { return response()->json(['message' => 'Not Found!]); });
Da die API-Middleware-Gruppe das Präfix /api hat, gelten alle Präfixe von /api Nicht definierte Routen werden als Fallback-Route in die Routing-Datei api.php eingetragen, nicht in die in der Routing-Datei web.php definierte Route.
Bei Verwendung von abort(404) wird eine NotFoundHttpException ausgelöst und der Prozessor wird die Die 404.blade.php-Ansichtsdatei wird für uns gerendert. Die gleiche ModelNotFoundException-Ausnahme wird auf die gleiche Weise behandelt, damit wir den Fallback besser rendern können ? Wie wäre es mit einer gerouteten Ansicht anstelle einer normalen Ansicht?
class Handler extends ExceptionHandler { public function render($request, Exception $exception) { if ($exception instanceof NotFoundHttpException) { return Route::responseWithRoute('fallback'); } if ($exception instanceof ModelNotFoundException) { return Route::responseWithRoute('fallback'); } return parent::render($request, $exception); } }
Route::respondWithRoute('fallback') Gehen Sie zurück und führen Sie die Route mit dem Namen fallback aus. Wir können die Fallback-Route wie folgt benennen:
Route::fallback(function() { return response()->view('notFound', [], 404); })->name('fallback');
Sie können sogar Fallback-Routen für bestimmte Ressourcen angeben:
if ($exception instanceof ModelNotFoundException) { return $exception->getModel() == Server::class ? Route::respondWithRoute('serverFallback') : Route::respondWithRoute('fallback'); }
Jetzt müssen wir diese Fallback-Route in der Routing-Datei definieren:
Route::fallback(function(){ return 'We could not find this server, there are other '. auth()->user()->servers()->count() . ' under your account ......'; })->name('serverFallback');
Verwandte Empfehlungen:
Mac Mamp Ngiux Laravel Framework meldet 404-Fehler
So implementieren Sie die reaktionsfähige Schnittstelle von Laravel 5.5
Das obige ist der detaillierte Inhalt vonSo implementieren Sie die 404-Antwort mit dem Laravel 5.5+ Framework besser. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!