2013-03-22 62 views
2

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

这就是我的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 
    ); 

} 

你们任何人有一个想法?

非常感谢您

+0

为什么不直接将每个请求重定向到正在建设中的页面(哪里有布局/构造不足)? – 2013-03-22 18:01:24

+0

认为它可以完成而无需生成额外的控制器/操作! – Stillmatic1985 2013-03-22 18:02:16

回答

3

这是毫无意义的听调度事件,因为路由不能找到一个控制器派遣,而不是听渲染事件并setTemplate在视图模型,这样的事情应该工作

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