Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Zend framework2 附加到控制器调度事件_Zend Framework2 - Fatal编程技术网

Zend framework2 附加到控制器调度事件

Zend framework2 附加到控制器调度事件,zend-framework2,Zend Framework2,这里是ZF2问题 我喜欢ZF2中的事件驱动功能 这是我的目标 我希望使用数据库表启动会话,如果由于某种原因没有数据库连接,我希望被抛出到错误/错误模板 以下是我考虑过的一些方法。我可以附加到应用程序“路由”事件,并在路由匹配发生之前或之后立即启动会话。但是,在Mvc\Application.php文件中没有TRY-catch,所以我认为这不是做这件事的地方 但是,在被调用的控制器的分派方法周围有一个try-catch块。我注意到控制器有它自己触发的内部“分派”事件 因此,另一种可能性是,我应该附

这里是ZF2问题

我喜欢ZF2中的事件驱动功能

这是我的目标

我希望使用数据库表启动会话,如果由于某种原因没有数据库连接,我希望被抛出到错误/错误模板

以下是我考虑过的一些方法。我可以附加到应用程序“路由”事件,并在路由匹配发生之前或之后立即启动会话。但是,在Mvc\Application.php文件中没有TRY-catch,所以我认为这不是做这件事的地方

但是,在被调用的控制器的分派方法周围有一个try-catch块。我注意到控制器有它自己触发的内部“分派”事件

因此,另一种可能性是,我应该附加到这个内部控制器调度事件,然后在控制器的操作方法实际执行之前,也就是在它们需要会话之前,设置会话

那么,我如何附加到这个内部“分派”方法?或者我怎样才能使任何数据库连接异常进入我的nice异常页面,而不是在没有任何异常处理的情况下作为正常的php错误被抛出

控制器上不再有init()方法,因为这是事件应该提供的功能

谢谢你的帮助


仅供参考:我尝试附加到不同的事件,例如“bootstrap”、“loadmodules”、“loadmodules.post”。我在附加的方法中所做的只是抛出一个异常,看看我是否会出现在我拥有的尼斯错误页面中,但我没有任何运气。我最终调试了它,找到了这个内部控制器的“分派”方法。控制器拥有自己的内部事件管理器。至少这是我从调试中得到的信息。我可能错了,请纠正我

您可以控制路由并在catch块中分派正确的控制器/操作/视图(带有错误消息的控制器/操作/视图),而不是抛出异常并希望得到最好的结果。Zend已经捕获了由调度控制器引起的异常,并自动路由它们。如果数据库连接发生故障,我想让Zend将我路由到一个好的错误页面。什么时候检测到数据库连接故障?@RobAllen,当调用session_start启动数据库存储的会话时,可能会检测到。如果没有数据库连接,则会话启动将失败,因为它无法连接到数据库以获取/写入会话。