公共页面中的维护模式不在管理页面中[Laravel]

时间:2016-03-18 08:35:48

标签: php laravel-5

现在我正在开发laravel web项目,管理页面上有一个功能,将web设置为维护模式,但是这个维护只是停止继续进入公共页面的请求,我试着制作中间件所以全部如果在维护模式下设置了设置,则处理公共页面的路由或控制器将停止。 (设置保存在具有价值'在线'或'维护')的数据库中

public function handle($request, Closure $next, $guard = null){
    // retrieve setting from database and turn into key value array
    if($site_settings['status'] == 'maintenance'){
        return response()->view('errors.500', [], 500);
    }

    return $next($request);
}

我的方法不正确?

1 个答案:

答案 0 :(得分:2)

您是否在Kernel.php注册了中间件?

您需要在全球中间件评论下将其添加到app/Http/Kernel.php

/**
 * The application's global HTTP middleware stack.
 *
 * These middleware are run during every request to your application.
 *
 * @var array
 */
protected $middleware = [
    \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
    \App\Http\Middleware\YourMiddlewareClass::class, // add it here
];

在中间件中,您可以添加以下内容:

if ( $site_settings['status'] == 'maintenance' && !$request->is('admin/*') ){
    return response()->view('errors.500', [], 500);
}

这会对网址中不以admin/开头的任何内容强制执行错误500.