Laravel 4 Laravel 4仅在生产环境中显示自定义错误页面

Laravel 4 Laravel 4仅在生产环境中显示自定义错误页面,laravel-4,Laravel 4,我是否理解正确:如果我想显示403、404等错误的自定义页面,我应该检查app.debug是否设置为false: if (!Config::get('app.debug')) { App::error(function(Exception $exception, $code) { switch ($code) { case 403: return Response::view('errors.403', ar

我是否理解正确:如果我想显示403、404等错误的自定义页面,我应该检查app.debug是否设置为false:

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 handler,我将始终获得这些自定义页面,而不是详细信息


我说的对吗?

您可以将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);
    }
});

我的第一个想法是使用,但我可能错了。你想说使用App::environment()而不是App.debug变量来检查吗?我刚刚阅读了有关环境的内容,这很神奇,我可以在我的生产环境中自动重写app.debug变量。如果(!app::environment('local'){}或任何您开发环境的调用,您也可以使用
。通常我创建名为isProduction()的简单函数作为app:environment('production')的快捷方式为了使事情更简单。修复语法错误,请删除return语句中的其他“')。