我正在编写一个Web应用程序,它有一个前置网站,然后是一个管理控制台。我希望能够设置一个设置,当设置为true意味着在前端网站上显示保留或维护页面。
我的路由配置当前位于yaml文件中,并在每个请求上继续读取。但现在我希望它能够聪明地知道它是否处于维护模式,以及是否将所有路由指向一个特定页面。或者它可以改变路线,以便只有一个。
我认为可以根据设置加载不同的文件来完成,但这意味着所有路由都是静态的,例如无法从数据库中检索。另外,在请求的设置阶段,我在从数据库中读取时遇到了问题。我将系统配置为从DB读取服务,但这在设置阶段似乎不可用,我有错吗?
任何指针都很感激地收到了。
罗素
答案 0 :(得分:6)
我经常使用Silex的维护页面:
在我定义$app['debug'] = true;
的同一个地方,我还定义了另一个用于各种检查的变量$app['maintenance'] = true;
。
其中我定义了一个维护页面如下:
$app->before(function (Request $request, Application $app) {
if($app['maintenance']){
$subRequest = Request::create('/maintenance', 'GET');
return $app->handle($subRequest, HttpKernelInterface::SUB_REQUEST);
}
});
$app->get('/maintenance', function () use ($app) {
// Here you can return your maintenance page
return $app->render('maintenance.twig');
});
然后,当我打开维护变量时,每个请求都会重定向到维护路由。
正如您所看到的,我不在我的应用程序中使用任何yaml配置文件,但其想法与它们相同。