2016-07-29 13 views
2

So möchte ich alle möglichen und unerwarteten Fehler (wie 401, 404, 500) mit nur einer Ansicht abdecken. Ich möchte, dass die gleiche Ansicht auf alle möglichen Fehler angezeigt wird. Ich habe eine Lösung gefunden - den gleichen Code kopieren und einfügen und die Ansichten mit verschiedenen Fehlercodes benennen. Aber das scheint steif und falsch. Gibt es einen besseren Weg, dies zu erreichen?Laravel - Eine Ansicht für alle möglichen Fehler

Antwort

1

Ein sauberer Weg, um diesen Effekt zu erzielen, ist die Änderung Laravel's exception handler.

Ändern Sie App\Exceptions\Handler, um jeden Fehler abzufangen und Ihre freigegebene benutzerdefinierte Fehlerseite zurückzugeben.

/** 
* Render an exception into an HTTP response. 
* 
* @param \Illuminate\Http\Request $request 
* @param \Exception $e 
* @return \Illuminate\Http\Response 
*/ 
public function render($request, Exception $e) 
{ 
    if ($e instanceof NotFoundHttpException) { 
     return response()->view('errors.custom', [], 404); 
    } 

    return parent::render($request, $e); 
} 

Einige individuell gestaltet werden können vollständig erforderlich sein, genau zu treffen, was &, wie Sie Daten auf Ihre freigegebenen benutzerdefinierten Ansicht übergeben wollen.

-1

Übergeben Sie den Fehlercode an Ihre Sicht auf den Handler, und zeigen Sie den Code auf Ihrer Seite an, verwenden Sie einen Schalter, um alle Nachrichten abhängig von dem Fehlercode zu behandeln.

-1

Sie können eine eindeutige Ansicht erstellen (Standard: 404-Fehler), try catch in Ihrem Code verwenden, um andere Fehler zu erfassen und diese Ansicht mit Parametern aufzurufen, damit Sie den 404-Standardfehler in einen anderen Fehler ändern können.

3

In der Datei App/Exceptions/Handler.php können Sie ändern, was passiert, wenn eine Ausnahme ausgelöst wird. Insbesondere gibt es eine render-Methode, mit der Sie alle Ausnahmen in einer Anwendung abfangen können.

public function render($request, Exception $e) 
{ 
    // Handle your error here. Perhaps you can show a view 
    // when a condition is met. Anything that isn't caught 
    // here will be handled by Laravel with the 
    // parent::render call below 

    return parent::render($request, $e); 
} 

Die parent::render($request, $e) ist, wo Laravel normalerweise zeigen würde, es ist Ausnahme-/oops Seite. Wenn Sie diese Methode überschreiben, können Sie alle Anwendungsfehler abfangen, einschließlich 404, 401 usw.

Verwandte Themen