Heim > PHP-Framework > Laravel > Hauptteil

So implementieren Sie die 404-Antwort mit dem Laravel 5.5+ Framework besser

不言
Freigeben: 2018-09-10 14:48:59
Original
1999 Leute haben es durchsucht

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.';
});
Nach dem Login kopieren

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);
});
Nach dem Login kopieren
@extends('layout.app')

@section('content')
    <h3>Sorry! this page doesn't exist.</h3>
@stop
Nach dem Login kopieren

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.

API-Schnittstellenbeschreibung

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!]);
});
Nach dem Login kopieren

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.

Verwenden Sie abort(404) und ModelNotFound-Ausnahme

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);
    }
}
Nach dem Login kopieren

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');
Nach dem Login kopieren

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');
}
Nach dem Login kopieren

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');
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage