2013-11-25 12 views
7

で4つの表示カスタムエラーページは、私が右理解しています:私は403のためのカスタムページを表示したい場合は、404など私はapp.debugがfalseに設定されているかどうかを確認する必要がありますエラー:Laravelのみ生産

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); 
    }); 
} 

なぜなら、app.debugをチェックせずにApp :: errorハンドラを設定すると、詳細な情報の代わりにこれらのカスタムページがいつも得られるからです。

私はそうですか?

+0

私の最初の考えは、[Laravelの環境設定](http://four.laravel.com/docs/configuration#environment-configuration)を使用することでしたが、間違っている可能性があります。 –

+1

あなたはapp.debug変数の代わりにApp :: environment()を使ってそれをチェックしたいと言いたいのですか?私はちょうど環境について読んだだけで、素晴らしいです、私は自動的に私の生産環境でapp.debug変数を無効にすることができます – Victor

+0

あなたは 'if(!App :: environment( 'local'){}' – JoshP

答えて

10

ifステートメントをapp :: error関数に移動するだけで済みます。そのため、エラーは常にログに記録され、カスタムエラーページはapp.debugがfalseの場合にのみ表示されます。

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

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

return文で追加の ')'を削除します。 – Rashi