2

zf2 中是否有一个事件可以附加到在设置 not_found_template 之前调用的 sharedEventManager/eventManager?我想在我的网站上实现一个“建设中的页面”模块。如果调用现有路由,一切正常。但是,当调用不存在的路由时,会显示标准 404 错误页面,因为找不到该路由。

那是我的 Module.php

public function onBootstrap(Event $e)
{
    $e->getApplication()->getEventManager()->getSharedManager()->attach(
        'Zend\Mvc\Controller\AbstractActionController', 'dispatch', function ($e) {
            $e->getTarget()->layout('layout/underconstruction');
        }, -1000
    );

}

你们有人有想法吗?

非常感谢你

4

1 回答 1

4

监听调度事件是没有意义的,因为路由找不到要调度的控制器,而是在视图模型上监听渲染事件和 setTemplate,这样的事情应该可以工作

$e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_RENDER, function ($e) {        
    $response = $e->getResponse();
    if ($response->getStatusCode() == 404) {
        $e->getViewModel()->setTemplate('layout/underconstruction');
    }
}, -1000);
于 2013-03-22T18:30:49.187 回答