如何在不使用ZF2 ..中任何控制器对象的情况下访问module.php中的控制器插件?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何在不使用ZF2 ..中任何控制器对象的情况下访问module.php中的控制器插件?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2055字,纯文字阅读大概需要3分钟。
内容图文
我想在module.php中添加错误处理,以在Flash Messenger中添加所有错误消息并重定向到特定页面(根据我的要求):
public function handleError(MvcEvent $e) {
$exception = $e->getParam('exception');
$controller = $e->getTarget();
//echo $exception->getMessage(); exit;
if (!$e->getApplication()->getServiceManager()->get('AuthService')->hasIdentity()) {
$controller->flashMessenger()->addErrorMessage("Session Expired..!!");
return $e->getTarget()->plugin('redirect')->toRoute('auth', array('action' => 'login'));
}
switch ($exception->getCode()) {
case "2003" :
$controller->flashMessenger()->addErrorMessage("Unable to connect database..!!");
break;
default :
$controller->flashMessenger()->addErrorMessage($exception->getMessage());
break;
}
$e->getApplication()->getServiceManager()->get('AuthService')->clearIdentity();
return $e->getTarget()->plugin('redirect')->toRoute('auth', array('action' => 'login'));
}
但是在某些错误中,它会抛出对$e-> getTarget()上未定义方法插件的调用,因为在某些情况下,错误是在插件绑定之前生成的.我想要一种无需引用任何控制器即可访问重定向和Flash Messenger插件的方法.
解决方法:
在尝试了多种在google上定义的方法后,我发现以下工作方式:
public function handleError(MvcEvent $e) {
$exception = $e->getParam('exception');
$sm = $e->getApplication()->getServiceManager();
$flashmessenger = $sm->get('ControllerPluginManager')->get('flashmessenger');
//echo $exception->getMessage(); exit;
if (!$e->getApplication()->getServiceManager()->get('AuthService')->hasIdentity()) {
$flashmessenger->addErrorMessage("Session Expired..!!");
return $sm->get('ControllerPluginManager')->get('redirect')->toRoute('auth', array('action' => 'login'));
}
switch ($exception->getCode()) {
case "2003" :
$flashmessenger->addErrorMessage("Unable to connect database..!!");
break;
default :
$flashmessenger->addErrorMessage($exception->getMessage());
break;
}
$e->getApplication()->getServiceManager()->get('AuthService')->clearIdentity();
return $sm->get('ControllerPluginManager')->get('redirect')->toRoute('auth', array('action' => 'login'));
}
我在这里发布了这些解决方案,这样可以节省其他人再次搜索的时间.
内容总结
以上是互联网集市为您收集整理的如何在不使用ZF2 ..中任何控制器对象的情况下访问module.php中的控制器插件?全部内容,希望文章能够帮你解决如何在不使用ZF2 ..中任何控制器对象的情况下访问module.php中的控制器插件?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。