在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
);
}
你们有没有想法?
非常感谢
答案 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);