gpt4 book ai didi

php - ZF2维护页面

转载 作者:行者123 更新时间:2023-12-02 08:34:11 26 4
gpt4 key购买 nike

我尝试使用 ZF2 设置维护页面,但它不起作用。我在公共(public)文件夹 (www) 中放置了一个 maintenance.html 页面,在我的 onbootstrap 函数中我得到了以下代码:

    $config = $e->getApplication()->getServiceManager()->get('Appli\Config'); 
if($config['maintenance']) {
$response = $e->getResponse();
$response->getHeaders()->addHeaderLine('Location', '/maintenance.html');
$response->setStatusCode(503);
return $response;
}

我输入了 if cause $config['maintenance'] is true 但它没有按预期显示我的 maintenance.html 页面。相反,它显示询问的页面。我的重定向有问题吗?

最佳答案

您似乎正试图直接从您的 onBootstrap 方法中短路请求。那是行不通的,那时路由还没有解决, Controller 也没有被 dispatch 。本质上,您所做的只是预填充响应,只是为了在路由和发送请求后将其覆盖。

如果你想影响响应,你需要监听其他 MvcEvent 之一。似乎您想在调度 Controller 之前执行此操作,因此执行此操作的位置将在 EVENT_ROUTE 中,理想情况下具有高优先级,因此它发生在路由器解析路由之前(保存浪费处理解决一条永远不会被调度的路线)。

public function onBootstrap(MvcEvent $e)
{
$events = $e->getApplication()->getEventManager();
$events->attach(MvcEvent::EVENT_ROUTE, function (MvcEvent $r) {
$config = $r->getApplication()->getServiceManager()->get('Appli\Config');
if ($config['maintenance']) {
$response = $r->getResponse();
// set content & status
$response->setStatusCode(503);
$response->setContent('<h1>Service Unavailable</h1>');
// short-circuit request...
return $response;
}
}, 1000);
}

关于php - ZF2维护页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23435610/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com