wake-up-neo.net

laravel 5 Gewohnheit 404

Das macht mich verrückt. Ich arbeite mit Laravel 5 und es scheint, dass die Dokumente für 4.2 und das Generieren von 404-Seiten nicht funktionieren.

Erstens gibt es keine global.php, also habe ich versucht, Folgendes in routes.php zu setzen:

App::missing(function($exception)
{
    return Response::view('errors.missing', array(), 404);
});

Dies führt zu einem Fehler "Methode missing () nicht gefunden"

Debug ist auf false gesetzt.

Ich habe gesucht und gesucht, aber bisher habe ich keine Informationen zum Einstellen von 404 Seiten in Laravel 5 gefunden.

16
Cosmo Kramer

Gehen Sie zu resources/views/errors und erstellen Sie eine 404.blade.php-Datei mit den gewünschten Informationen auf Ihrer 404-Seite. Laravel kümmert sich um den Rest. 

31
JNsites

wenn Sie eine globale Lösung haben möchten, können Sie Änderungen in /app/Exceptions/Handler.php vornehmen, indem Sie folgenden Code hinzufügen

public function render($request, Exception $e)
{
    if ($this->isHttpException($e)) {

        $statusCode = $e->getStatusCode();

        switch ($statusCode) {

            case '404':
                return response()->view('layouts/index', [
                    'content' => view('errors/404')
                ]);
        }
    }
    return parent::render($request, $e);
}
9
Hayk Aghabekyan

Ich mag den Case Statement-Ansatz, aber er hat einige Probleme, die tief in die Tiefe gehen.

Dies fängt jedoch alle Fehler auf:

Route::any('/{page?}',function(){
  return View::make('errors.404');
})->where('page','.*');
2
jeremykenedy

Laravel 5 hat bereits eine vordefinierte Render-Methode (Zeile 43) unter app/Exceptions/Handler.php. Fügen Sie einfach den Umleitungscode vor parent :: render ein. Wie so

public function render($request, Exception $e)
{
    if ($e instanceof ModelNotFoundException) 
    {
        $e = new NotFoundHttpException($e->getMessage(), $e);
    }

    //insert this snippet
    if ($this->isHttpException($e)) 
    {
        $statusCode = $e->getStatusCode();
        switch ($statusCode) 
        {
            case '404': return response()->view('error', array(), 404);
        }
    }

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

Hinweis: Meine Ansicht befindet sich unter Ressourcen/Ansichten. Sie können es irgendwie woanders hinstellen, wo Sie wollen.

2
Kent Aguilar

In Laravel 5 können Sie einfach eine benutzerdefinierte 404.blade.php unter resources/views/errors setzen und das war's. Für andere Fehler wie 500 können Sie Folgendes in Ihrer app/Exeptions/Handler.php versuchen:

public function render($request, Exception $e)
{

    if ( ! config('app.debug') && ! $this->isHttpException($e)) {
        return response()->view('errors.500');
    }

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

Machen Sie dasselbe für 500 HTTP-Ausnahmen

1
Mithredate