内置Symfonyob娱乐下载事件
编辑该页面警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 5.0,不再维护。
读这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。
内置Symfonyob娱乐下载事件
在处理一个HTTP请求,Symfony框架(或任何应用程序使用ob娱乐下载HttpKernel组件)分派一些事件你可以使用它来修改请求是如何处理的。
内核事件
每个事件派遣HttpKernel组件的一个子类KernelEvent提供以下信息:
- getRequestType ()
-
返回类型的请求(
HttpKernelInterface: MASTER_REQUEST
或HttpKernelInterface: SUB_REQUEST
)。 - getKernel ()
- 返回内核处理请求。
- getRequest ()
-
返回当前
请求
被处理。 - isMasterRequest ()
- 检查是否这是一个主请求。
kernel.request
事件类:RequestEvent
这事件是派遣在Symfony的早期,在控制器决定。ob娱乐下载这是有用的信息添加到请求或返回一个响应早期停止请求的处理。
另请参阅
阅读更多的kernel.request事件。
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.request
kernel.controller
事件类:ControllerEvent
这个事件是派遣后,控制器执行已经解决,但在执行之前。是有用的初始化控制器所需的事情后,等param转换器,甚至完全改变控制器:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\HttpKernel\事件\ControllerEvent;公共函数onKernelController(ControllerEvent美元事件){/ /……/ /控制器可以改变任何PHP调用美元事件- >setController (美元myCustomController);}
另请参阅
阅读更多的kernel.controller事件。
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.controller
kernel.controller_arguments
这个事件之前派出一个控制器。是有用的配置参数将传递给控制器。通常,这是使用URL路由参数映射到它们相应的命名参数;或通过时的当前请求请求
type-hint发现:
1 2 3 4 5 6 7 8 9 10 11 12 13
使用ob娱乐下载\组件\HttpKernel\事件\ControllerArgumentsEvent;公共函数onKernelControllerArguments(ControllerArgumentsEvent美元事件){/ /……/ /得到控制器和请求参数美元namedArguments=美元事件- >getRequest ()- >属性- >所有();美元controllerArguments=美元事件- >getArguments ();/ /设置控制器参数修改原始参数或添加新的美元事件- >setArguments (美元newArguments);}
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.controller_arguments
kernel.view
事件类:ViewEvent
这个事件后派出控制器已经执行但只有如果控制器不返回一个响应对象。返回值是有用的变换(如字符串和一些HTML内容)进入响应
Symfony所需的对象:ob娱乐下载
1 2 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\HttpKernel\事件\ViewEvent;公共函数onKernelView(ViewEvent美元事件){美元价值=美元事件- >getControllerResult ();美元响应=新反应();/ /……自定义返回值的响应美元事件- >setResponse (美元响应);}
另请参阅
阅读更多的kernel.view事件。
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.view
kernel.response
事件类:ResponseEvent
这个事件后派出控制器或任何kernel.view
侦听器返回一个响应
对象。是有用的修改或替换的反应,然后再把它寄回(如添加/修改HTTP头,加上饼干,等等):
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\HttpKernel\事件\ResponseEvent;公共函数onKernelResponse(ResponseEvent美元事件){美元响应=美元事件- >getResponse ();/ /……修改响应对象}
另请参阅
阅读更多的kernel.response事件。
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.response
kernel.finish_request
这个事件是派遣后kernel.response
事件。是有用的设置应用程序的全局状态(例如,译者侦听器重置译者的语言环境的一个父请求):
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\HttpKernel\事件\FinishRequestEvent;公共函数onKernelFinishRequest(FinishRequestEvent美元事件){如果(零= = =美元parentRequest=美元这- >requestStack- >getParentRequest ()) {返回;}/ /重置的地区subrequest父请求的区域设置美元这- >setLocale (美元parentRequest);}
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.finish_request
kernel.terminate
事件类:TerminateEvent
这个事件响应被发送后派遣(后执行的处理()方法)。是有用的执行缓慢或不需要完成的复杂任务发送响应(例如,发送邮件)。
另请参阅
阅读更多的kernel.terminate事件。
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.terminate
kernel.exception
事件类:ExceptionEvent
这个事件是派遣期间一旦发生错误处理HTTP请求。是有用的细节发送从错误中恢复或修改异常的响应:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\HttpKernel\事件\ExceptionEvent;公共函数onKernelException(ExceptionEvent美元事件){美元异常=美元事件- >getThrowable ();美元响应=新反应();/ /设置基于捕获异常的响应对象美元事件- >setResponse (美元响应);/ /可以另外设置一个新的例外/ /美元异常= new \异常(一些特殊例外);/ /事件- > setThrowable美元($除外);}
请注意
TwigBundle注册一个ExceptionListener远期的请求
对于一个给定的控制器定义的exception_listener.controller
参数。
ob娱乐下载Symfony使用下面的逻辑来确定响应的HTTP状态代码:
- 如果isClientError (),isServerError ()或isRedirect ()的状态码是正确的,那么你呢
响应
使用对象; - 如果原始异常实现HttpExceptionInterface,然后
getStatusCode ()
被称为异常和使用(头的getHeaders ()
也添加); - 如果两个以上的不是真的,那么一个500状态码。
请注意
如果你想覆盖异常响应的状态代码,没有好的理由,你不应该称之为ExceptionEvent: allowCustomResponseCode ()
第一,然后设置状态代码的回应:
1 2 3
美元事件- >allowCustomResponseCode ();美元响应=新响应(没有内容的,204年);美元事件- >setResponse (美元响应);
状态码发送到客户端在上面的例子中204年
。如果$事件- > allowCustomResponseCode ()
省略,那么内核将设置一个合适的状态代码基于异常的类型。
另请参阅
阅读更多的kernel.exception事件。
执行这个命令来找出哪些听众注册为这个事件及其优先级:
1
美元php bin /控制台调试:事件分配器kernel.exception