2016-07-11 13 views
0

Ich habe drei verschiedene Http Namespaces in Laravel: Frontend, Backend und API. Für jede Routengruppe gibt es auch einen anderen Namensraum. Hier ist ein Beispiel-Code (Frontend Route Gruppe) von RouteServiceProvider:Laravel verschiedene 404 Seiten für verschiedene Namespaces/route-groups

protected function mapFrontendRoutes(Router $router) { 
    $router->group([ 
     'namespace' => 'App\Http\Controllers\Frontend', 
     'middleware' => 'web', 
    ], function ($router) { 
     require app_path('Http/Routes/frontend.php'); 
    }); 
} 

Jetzt möchte ich Setup drei verschiedene 404-Seiten für diese Namespaces/route Gruppen:

  • API - zeigen 404-Antwort in JSON Format
  • Frontend - Fehler/404.blade.php
  • Backend - haben eine eigene Ansicht in backend/Fehler/404.blade.php

Wie kann ich diese erstellen? Ich habe im Internet gesucht und bin dabei auf nichts gestoßen.

Laravel Version: 5.2

Antwort

1

Sie können das erreichen, indem er (add) renderHttpException Methode in App\Exceptions\Handler überschrieben. Die Methode empfängt den Parameter HttpException als Parameter und gibt eine Antwort zurück.

Etwas wie folgt aus:

protected function renderHttpException(HttpException $e) { 

    $status = $e->getStatusCode(); 

    if (Request::ajax() || Request::wantsJson()) { 
     return response()->json([], $status); 
    } else if(Request::is('/backend/*')) { //Chane to your backend your ! 
     return response()->view("backend/errors.{$status}", ['exception' => $e], $status, $e->getHeaders()); 
    }else { 
     return response()->view("errors.{$status}", ['exception' => $e], $status, $e->getHeaders()); 
    } 

} 
+0

Bitte beachten Sie auch die aktualisierte Antwort, die ich einige Code hinzugefügt haben! –

Verwandte Themen