web-dev-qa-db-de.com

App :: abort (404) entspricht Laravel 5?

Im Laravel 4 Früher konnte ich einfach anrufen

App::abort(404)

Gibt es ein Äquivalent in Laravel 5?

Zum Zeitpunkt des Schreibens scheint es überraschend wenige Informationen darüber zu geben. Ich habe Diskussionen darüber gefunden, wie man NotFoundHttpExceptions abfängt, aber das ist nicht das, was ich will, da die URL-Struktur bereits von meinem routes.php Datei. Um mehr Hintergrundinformationen zu geben, ist hier eine vereinfachte Version dessen, was ich versuche zu tun:

Routes.php:

Route::get('/info/{page}', array('as' => 'info', 'uses' => '[email protected]'));

Primary.php (controller)

public function infoPage($page){
    $pageData = DB::table('pages')->where('url_title', $page)->first();
    if(!empty($pageData)){
       // great, there's a corresponding row in the database for this page, go ahead and do stuff...
    }else {
       // This page doesn't exist, please abort with a 404 error... but how?
    }
}
15
Inigo

Sie müssen sich nur die Offizielle Dokumentation ansehen.

HTTP-Ausnahmen

Einige Ausnahmen beschreiben HTTP-Fehlercodes vom Server. Dies kann beispielsweise ein Fehler "Seite nicht gefunden" (404), ein "nicht autorisierter Fehler" (401) oder sogar ein vom Entwickler erzeugter Fehler 500 sein. Verwenden Sie Folgendes, um eine solche Antwort zurückzugeben:

abort(404);

Optional können Sie eine Antwort geben:

abort(403, 'Unauthorized action.');

Diese Methode kann jederzeit während des Lebenszyklus der Anforderung verwendet werden.

Benutzerdefinierte 404-Fehlerseite

Erstellen Sie eine resources/views/errors/404.blade.php - Datei, um eine benutzerdefinierte Ansicht für alle 404-Fehler zurückzugeben. Diese Ansicht wird für alle 404-Fehler angezeigt, die von Ihrer Anwendung generiert wurden.

Aktualisieren

Scheint, dass diese Funktion entfernt wurde und bald wie geschrieben ersetzt wird hier . Eine "Problemumgehung" kann das Erstellen einer 404-Antwort sein.

Benutzerdefinierte Antworten erstellen

Für die meisten Routen und Controller-Aktionen geben Sie eine vollständige Illuminate\Http\Response - Instanz oder eine Ansicht zurück. Wenn Sie eine vollständige Response -Instanz zurückgeben, können Sie den HTTP-Statuscode und die Header der Antwort anpassen. Eine Response -Instanz erbt von der Klasse Symfony\Component\HttpFoundation\Response Und bietet verschiedene Methoden zum Erstellen von HTTP-Antworten:

use Illuminate\Http\Response;

return (new Response($content, $status))
    ->header('Content-Type', $value);

Der Einfachheit halber können Sie auch den Antwort-Helfer verwenden:

return response($content, $status)
    ->header('Content-Type', $value);

Hinweis : Eine vollständige Liste der verfügbaren Antwortmethoden finden Sie in der API-Dokumentation und in der Symfony-API-Dokumentation) .

30
IlGala