现在我正在开发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);
}
我的方法不正确?
答案 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.