2013-11-25 13 views
7

Verstehe ich richtig: Wenn ich für 403 benutzerdefinierte Seiten angezeigt werden sollen, 404 usw. Fehler sollte ich prüfen, ob app.debug auf false gesetzt ist:Laravel 4 Anzeige benutzerdefinierte Fehlerseiten nur in der Produktion

if (!Config::get('app.debug')) { 
    App::error(function(Exception $exception, $code) 
    { 
     switch ($code) { 
      case 403: 
       return Response::view('errors.403', array(), 403); 

      case 404: 
       return Response::view('errors.404', array(), 404); 

      case 500: 
       return Response::view('errors.500', array(), 500); 

      default: 
       return Response::view('errors.default', array(), $code); 
     } 
     Log::error($exception); 
    }); 
} 

Denn wenn ich App :: error handler ohne Überprüfung von app.debug setze, bekomme ich immer diese benutzerdefinierten Seiten anstelle von detaillierten Informationen.

Bin ich richtig?

+0

Mein erster Gedanke war [Laravel Umgebung Konfiguration] (http://four.laravel.com/docs/configuration#environment-configuration) zu verwenden, aber ich könnte falsch sein. –

+1

Sie möchten App :: environment() anstelle der app.debug-Variable verwenden, um das zu überprüfen? Ich habe gerade über Umgebungen gelesen und es ist erstaunlich, ich kann die Variable app.debug in meiner Produktionsumgebung automatisch überschreiben – Victor

+0

Sie können auch 'if (! App :: environment ('local') {}' oder was auch immer Sie dev-Umgebung ist – JoshP

Antwort

10

Sie könnten einfach die if-Anweisung in die app :: error-Funktion verschieben. So wird der Fehler immer protokolliert und die benutzerdefinierte Fehlerseite wird nur angezeigt, wenn app.debug false ist.

App::error(function(Exception $exception, $code) 
{ 
    Log::error($exception); 

    if (!Config::get('app.debug')) { 
     return Response::view('errors.index', $code); 
    } 
}); 
+0

behebe den Syntaxfehler, entferne zusätzliche ')' in der Return-Anweisung. – Rashi

Verwandte Themen