Laravel FrozenNode Administrator在维护模式下运行

时间:2013-07-19 23:00:35

标签: laravel laravel-4 administration

我的问题是:如何让Frozennode管理员在Laravel维护模式下正常运行?

这是我在global.php中得到的

App::down(function()
{
    return Response::view('maintenance', array(), 503);
});

谢谢!

2 个答案:

答案 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);
});