我正在使用laravel开发管理面板。我希望最终用户选择站点是否关闭(出于维护或类似目的)。 首选项将以布尔值存储在数据库中。如果站点关闭,基于此值的前端将被路由到自定义视图。
(站点将托管在共享主机上,而不是SSL。不能使用artisan命令。)
目前,我可以在启动时通过AppServiceProvider.php的register()方法中的自定义方法从数据库中获取“ site_is_down”值。
但是我不确定如何根据路由文件中的该值路由呼叫。 我在routes / web.php中有两个命名的路由组(前端和后端)和标准的Auth :: routes()。仅前端路由应有条件地路由。后端和身份验证应排除在外。 (以便用户可以访问“后端”面板。)
我正在尝试实现以下目标:
(我知道这是不正确的语法,我正在尝试解释我的想法)
<?php
if (config('global.site_is_down') === true) {
//Route all frontend route group to maintenance view ->except(Backend and auth)
} else {
//Route all as normal
}
答案 0 :(得分:1)
创建一个middleware:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckMaintainaceMode
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($config('global.site_is_down') === true /*or what ever logic you need*/) {
return redirect('mainainance-mode-url');
}
return $next($request);
}
}
然后在前端路由中使用此中间件
Route::get('/frontend', function () {
//
})->middleware('CheckMaintainaceMode');
或
Route::group(['middleware' => ['CheckMaintainaceMode']], function () {
//
});