Comment implémenter la page 404 ? Il existe en fait de nombreuses méthodes. Ensuite, cet article vous présentera comment utiliser le framework Laravel 5.5+ pour mieux implémenter la réponse 404. Sans plus tarder, examinons le contenu spécifique.
Laravel 5.5.10 encapsule deux méthodes de routeur utiles qui peuvent nous aider à fournir de meilleures pages 404 à nos utilisateurs. Désormais, lorsqu'une exception 404 est levée, Laravel affichera un magnifique fichier de vue 404.blade.php que vous pouvez personnaliser pour afficher l'interface utilisateur de l'utilisateur, mais dans cette vue, vous n'avez pas accès à session, cookie, authentification (auth), etc...
Dans laravel 5.5.10, nous avons un nouveau Route::fallback() Méthode utilisée pour définir la route sur laquelle Laravel se rabat lorsqu'aucune autre route ne correspond à la demande.
Route::fallback(function () { return 'Sorry' . auth()->user()->name . '! This page does not exist.'; });
Ainsi, nous pouvons désormais remplacer la simple vue 404 par une mise en page d'application avec une page et un pied de page normaux, tout en affichant également un message convivial à l'utilisateur.
Route::fallback(function() { return response()->view('notFound', [], 404); });
@extends('layout.app') @section('content') <h3>Sorry! this page doesn't exist.</h3> @stop
Lorsque Laravel rend cette route de secours, tous les middlewares seront exécutés, donc lorsque vous définissez la solution de secours dans le fichier de route web.php Lorsque vous vous retirez de la route, tous les middlewares du groupe middleware web seront exécutés, afin que nous puissions obtenir les données de session.
Maintenant, lorsque vous cliquez sur /page-non-existante, vous verrez la vue définie dans l'itinéraire de secours même lorsque vous cliquez sur / api/non-existing-endpoint, si vous ne souhaitez pas fournir cette interface, vous pouvez définir la réponse JSON dans la route de secours api. Passons à la Une autre API. La route de secours est définie dans le fichier de routage php :
Route::fallback(function() { return response()->json(['message' => 'Not Found!]); });
Puisque le groupe de middleware API a le préfixe /api, tous les fichiers avec /api Les routes non définies avec préfixe entreront la route de secours dans le fichier de routage api.php, pas celle définie dans le fichier de routage web.php.
Lors de l'utilisation de abort(404), une NotFoundHttpException sera levée et le processeur Le fichier de vue 404.blade.php est rendu pour nous. La même exception ModelNotFoundException sera gérée de la même manière. Alors, comment devrions-nous le gérer afin que nous puissions mieux restituer la solution de secours. ? Qu'en est-il d'une vue routé au lieu d'une vue normale ?
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') Revenez en arrière et exécutez la route nommée fallback Nous pouvons nommer la route de secours comme suit :
Route::fallback(function() { return response()->view('notFound', [], 404); })->name('fallback');Même, vous pouvez spécifier une route de secours pour une ressource spécifique :
if ($exception instanceof ModelNotFoundException) { return $exception->getModel() == Server::class ? Route::respondWithRoute('serverFallback') : Route::respondWithRoute('fallback'); }Nous devons maintenant définir cette route de secours dans le fichier de routage :
Route::fallback(function(){ return 'We could not find this server, there are other '. auth()->user()->servers()->count() . ' under your account ......'; })->name('serverFallback');Recommandations associées :
mac mamp ngiux laravel framework signale une erreur 404
Comment implémenter l'interface réactive de Laravel 5.5
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!