我的问题是:如何让Frozennode管理员在Laravel维护模式下正常运行?
这是我在global.php中得到的
App::down(function()
{
return Response::view('maintenance', array(), 503);
});
谢谢!
答案 0 :(得分:2)
我挖了核心,你无法做到。 Laravel检查down
文件夹中名为app/storage/meta
的文件,如果它在那里,Laravel甚至不会调用路由,它只会显示错误页面。
这是来自laravel的isDownForMaintenance
函数:
public function isDownForMaintenance()
{
return file_exists($this['path.storage'].'/meta/down');
}
没有可能的配置。
laravelish“维护模式”的另一种方法是在config/app.php
中设置一个新值,添加:
'maintenance' => true,
然后将其添加到您的before
过滤器中:
App::before(function($request)
{
if(
Config::get('app.maintenance') &&
Request::segment(1) != 'admin' // This will work for all admin routes
// Other exception URLs
)
return Response::make(View::make('hello'), 503);
});
然后设置:
'maintenance' => true,
返回正常模式
答案 1 :(得分:1)
实际上还有另一种方式,更直接。正如您在Laravel documentation中读到的那样,从闭包中返回NULL将使Laravel忽略特定请求:
如果传递给down方法的Closure返回NULL,则该请求将忽略维护模式。
因此,对于以admin开头的路线,您可以执行以下操作:
App::down(function()
{
// requests beginning with 'admin' will bypass 'down' mode
if(Request::is('admin*')) {
return null;
}
// all other routes: default 'down' response
return Response::view('maintenance', array(), 503);
});