在not_found_template之前的ZF2事件

时间:2013-03-22 17:26:09

标签: events routes zend-framework2

在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
    );

}

你们有没有想法?

非常感谢

1 个答案:

答案 0 :(得分:4)

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

$e->getApplication()->getEventManager()->attach(MvcEvent::EVENT_RENDER, function ($e) {        
    $response = $e->getResponse();
    if ($response->getStatusCode() == 404) {
        $e->getViewModel()->setTemplate('layout/underconstruction');
    }
}, -1000);