symfony2 Event Listener(2)
2016-02-04 15:05
323 查看
1.symfony有各种事件和钩子可以用来触发应用程序中的自定义行为。这些事件是由httpkernel组件抛出,可以在kernelevents类中实视。2.要监听一个事件并添加您自己的自定义逻辑,您必须创建一个服务,该服务将作为该事件的事件侦听器。在这个事件监听器中,您将创建一个服务,将作为一个异常侦听器,允许您修改应用程序所显示的异常。kernelevents::例外事件只是其中的一个核心事件:1.第一步:
namespace AppBundle\EventListener; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface; class AcmeExceptionListener { public function onKernelException(GetResponseForExceptionEvent $event) { // You get the exception object from the received event $exception = $event->getException(); $message = sprintf( 'My Error says: %s with code: %s', $exception->getMessage(), $exception->getCode() ); // Customize your response object to display the exception details $response = new Response(); $response->setContent($message); // HttpExceptionInterface is a special type of exception that // holds status code and header details if ($exception instanceof HttpExceptionInterface) { $response->setStatusCode($exception->getStatusCode()); $response->headers->replace($exception->getHeaders()); } else { $response->setStatusCode(Response::HTTP_INTERNAL_SERVER_ERROR); } // Send the modified response object to the event $event->setResponse($response); } }
2、第二步:注入事件
# app/config/services.yml services: kernel.listener.your_listener_name: class: AppBundle\EventListener\AcmeExceptionListener tags: - { name: kernel.event_listener, event: kernel.exception, method: onKernelException }
kernel.exception 指监听整个框架所有的错误
kernel.request 指监听整个框架所有的请求前的事情
method: onKernelException 指监听某个类下的一个方法
相关文章推荐
- untiy 3d ShaderLab读后感_0_目录
- iOS-圆形图像显示(UIImageView)
- 机器学习技法 笔记二 dual support vector machine
- JAVA反序列化漏洞
- 前端零基础学习提纲
- AR儿童绘本技术实现-静态着色
- UVa 1585 Score
- mybatis generator学习
- Nginx反向代理和负载均衡部署指南
- Java并发之(3):锁
- 10大优秀的移动Web应用程序开发框架推荐
- HYSBZ/BZOJ 1036 [ZJOI2008] 树的统计Count - 动态树LCT
- Java Criteria表关联查询(两个表未定义关联关系)
- Java实现UDP之Echo客户端和服务端
- 【Android】3.15 短串分享功能
- DBLINK的session无法关闭,报异常!
- Json概述以及python对json的相关操作
- jquery easyui validatebox remote使用
- Android studio 下的robotium自动化测试和持续集成
- Bitcode是什么?