内置Symfony欧宝娱乐app下载地址事件

编辑该页面

警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,不再维护。

这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.2(当前的稳定版本)。

内置Symfony欧宝娱乐app下载地址事件

在处理一个HTTP请求,Symfony框架(或任何应用程序使用欧宝娱乐app下载地址HttpKernel组件)分派一些事件你可以使用它来修改请求是如何处理的。

内核事件

每个事件派遣HttpKernel组件的一个子类KernelEvent提供以下信息:

getRequestType ()
返回类型的请求(HttpKernelInterface: MASTER_REQUESTHttpKernelInterface: SUB_REQUEST)。
getKernel ()
返回内核处理请求。
getRequest ()
返回当前请求被处理。

kernel.request

事件类:GetResponseEvent

这事件是派遣在Symfony的早期,在控制器决定。欧宝娱乐app下载地址这是有用的信息添加到请求或返回一个响应早期停止请求的处理。

另请参阅

阅读更多的kernel.request事件

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.request

kernel.controller

事件类:FilterControllerEvent

这个事件是派遣后,控制器执行已经解决,但在执行之前。是有用的初始化控制器所需的事情后,等param转换器,甚至完全改变控制器:

1 2 3 4 5 6 7 8 9
使用欧宝娱乐app下载地址\组件\HttpKernel\事件\FilterControllerEvent;公共函数onKernelController(FilterControllerEvent美元事件){/ /……/ /控制器可以改变任何PHP调用美元事件- >setController (美元myCustomController);}

另请参阅

阅读更多的kernel.controller事件

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.controller

kernel.view

事件类:GetResponseForControllerResultEvent

这个事件后派出控制器已经执行但只有如果控制器返回一个响应对象。返回值是有用的变换(如字符串和一些HTML内容)进入响应Symfony所需的对象:欧宝娱乐app下载地址

1 2 3 4 5 6 7 8 9 10 11 12
使用欧宝娱乐app下载地址\组件\HttpKernel\事件\GetResponseForControllerResultEvent;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;公共函数onKernelView(GetResponseForControllerResultEvent美元事件){美元瓦尔=美元事件- >getControllerResult ();美元响应=反应();/ /……自定义返回值的响应美元事件- >setResponse (美元响应);}

另请参阅

阅读更多的kernel.view事件

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.view

kernel.response

事件类:FilterResponseEvent

这个事件后派出控制器或任何kernel.view侦听器返回一个响应对象。是有用的修改或替换的反应,然后再把它寄回(如添加/修改HTTP头,加上饼干,等等):

1 2 3 4 5 6
公共函数onKernelResponse(FilterResponseEvent美元事件){美元响应=美元事件- >getResponse ();/ /……修改响应对象}

另请参阅

阅读更多的kernel.response事件

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.response

kernel.finish_request

事件类:FinishRequestEvent

这个事件后派遣子请求已经完成了。是有用的设置应用程序的全局状态(例如,译者侦听器重置译者的语言环境的一个父请求):

1 2 3 4 5 6 7 8 9
公共函数onKernelFinishRequest(FinishRequestEvent美元事件){如果(= = =美元parentRequest=美元- >requestStack- >getParentRequest ()) {返回;}/ /重置的地区subrequest父请求的区域设置美元- >setLocale (美元parentRequest);}

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.finish_request

kernel.terminate

事件类:PostResponseEvent

这个事件响应被发送后派遣(后执行的处理()方法)。是有用的执行缓慢或不需要完成的复杂任务发送响应(例如,发送邮件)。

另请参阅

阅读更多的kernel.terminate事件

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.terminate

kernel.exception

事件类:GetResponseForExceptionEvent

这个事件是派遣期间一旦发生错误处理HTTP请求。是有用的细节发送从错误中恢复或修改异常的响应:

1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用欧宝娱乐app下载地址\组件\HttpKernel\事件\GetResponseForExceptionEvent;使用欧宝娱乐app下载地址\组件\HttpFoundation\响应;公共函数onKernelException(GetResponseForExceptionEvent美元事件){美元异常=美元事件- >getException ();美元响应=反应();/ /设置基于捕获异常的响应对象美元事件- >setResponse (美元响应);/ /可以另外设置一个新的例外/ /美元异常= new \异常(一些特殊例外);/ /事件- > setException美元($除外);}

请注意

TwigBundle注册一个ExceptionListener远期的请求对于一个给定的控制器定义的exception_listener.controller参数。

欧宝娱乐app下载地址Symfony使用下面的逻辑来确定响应的HTTP状态代码:

请注意

如果你想覆盖异常响应的状态代码,没有好的理由,你不应该称之为GetResponseForExceptionEvent: allowSuccessfulResponse ()第一,然后设置状态代码的回应:

1 2 3
美元事件- >allowSuccessfulResponse ();美元响应=响应(没有内容的,204年);美元事件- >setResponse (美元响应);

状态码发送到客户端在上面的例子中204年。如果$事件- > allowSuccessfulResponse ()省略,那么内核将设置一个合适的状态代码基于异常的类型。

另请参阅

阅读更多的kernel.exception事件

执行这个命令来找出哪些听众注册为这个事件及其优先级:

1
美元php bin /控制台调试:事件分配器kernel.exception
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。