2017-03-09 4 views
3

Ich versuche, den Benutzer auf eine benutzerdefinierte 404-Seite bei NotFoundHttpException in Laravel 5.4Laravel 5.4 | Benutzerdefinierte Seite für NotFoundHttpException

zu umleiten, so zu tun, habe ich folgende Codestück in App \ Ausnahmen \ handler.php Datei:

public function render($request, Exception $exception) 
{ 
    if ($exception instanceof NotFoundHttpException) { 
     if ($request->expectsJson()) { 
      return response()->json(['error' => 'Not Found'], 404); 
     } 
     return response()->view('404', [], 404); 
    } 
    return parent::render($request, $exception); 
} 

Aus irgendeinem Grund funktioniert das nicht. Kann jemand bitte darauf hinweisen, wenn ich hier etwas falsch mache?

Dank!

+1

Haben Sie den richtigen Namespace verwendet? Verwenden Sie Symfony \ Component \ HttpKernel \ Exception \ NotFoundHttpException; '? –

+0

@Williamwei - Vielen Dank. Ich habe es komplett vergessen. – whitecollar

Antwort

4

Erstellen Sie einfach Ihre Ansicht hier

resources/views/errors/404.blade.php 

Laravel wird es dienen automatisch für Sie

6

Laravel Ihre Fehlerseiten machen, bevor sie auf der Standardansicht zurückzufallen.

Wenn Ihre Ansicht erstellt wird in: resources/views/errors/404.blade.php. Diese Seite wird vor der Fallback-Fehlerseite gerendert.

Die Ansichten im obigen Verzeichnis sollten die Namen des HTTP-Statuscodes haben, den Sie zu rendern versuchen.

Weitere Informationen finden Sie in der Laravel docs finden:

https://laravel.com/docs/5.4/errors#custom-http-error-pages

3

Sie brauchen nicht die Render-Funktion zu ändern. Halten Sie es wie das Original:

public function render($request, Exception $exception) 
{ 
    return parent::render($request, $exception); 
} 

Alles, was Sie tun müssen, ist nur die Aussicht machen:

resources/Ansichten/errors/404.blade.php

Dann fügen Sie einige Inhalt der Datei, zum Beispiel:

@extends('layouts.app') 

@section('content') 
404 
@endsection 

Laravel kümmert sich um den Rest ...

+0

Es gibt bereits zwei Antworten, die genau dasselbe sagen. Anstatt erneut zu antworten, überlegen Sie, ob Sie diese abstimmen und/oder zusätzliche Informationen über Kommentare hinzufügen. – ruuter

+0

Danke Es funktioniert für mich. Du sparst meine Zeit – LetsCMS

Verwandte Themen