内置Symfonyob娱乐下载事件

编辑本页

警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。

本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。

内置Symfonyob娱乐下载事件

在处理HTTP请求期间,Symfony框架(或任何使用ob娱乐下载HttpKernel组件)分派一些事件您可以使用它来修改处理请求的方式。

内核事件

HttpKernel组件分派的每个事件都是KernelEvent,提供以下资料:

getRequestType ()
返回类型的要求(HttpKernelInterface: MASTER_REQUESTHttpKernelInterface: SUB_REQUEST).
getKernel ()
返回处理请求的内核。
getRequest ()
返回当前请求被处理。
isMasterRequest ()
检查这是否是一个主请求。

kernel.request

事件类GetResponseEvent

在Symfony中,此事件在确定控制器之前非常早地分派。ob娱乐下载向Request中添加信息或提前返回Response以停止对请求的处理是很有用的。

另请参阅

阅读更多有关kernel.request事件

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.request

kernel.controller

事件类FilterControllerEvent

此事件在要执行的控制器被解析后,但在执行控制器之前分派。初始化控制器稍后需要的东西是很有用的,例如param转换器,甚至完全改变控制器:

1 2 3 4 5 6 7 8 9
使用ob娱乐下载组件HttpKernel事件FilterControllerEvent公共函数onKernelController(FilterControllerEvent事件/ /……//控制器可以更改为任何PHP可调用对象事件->setController (myCustomController);}

另请参阅

阅读更多有关kernel.controller事件

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.controller

kernel.controller_arguments

事件类FilterControllerArgumentsEvent

这个事件在控制器被调用之前被分派。配置要传递给控制器的参数是很有用的。通常,这用于将URL路由参数映射到相应的命名参数;或传递当前请求请求找到Type-hint:

1 2 3 4 5 6 7 8 9 10 11
公共函数onKernelControllerArguments(FilterControllerArgumentsEvent事件/ /……//获取控制器和请求参数namedArguments事件->getRequest ()->属性->所有();controllerArguments事件->getArguments ();//设置控制器参数以修改原始参数或添加新参数事件->setArguments (newArguments);}

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.controller_arguments

kernel.view

事件类GetResponseForControllerResultEvent

此事件在控制器执行后被分派,但是只有如果控制器有返回一个响应对象。将返回值(例如带有HTML内容的字符串)转换为响应Symfony需要的对象:ob娱乐下载

12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载组件HttpFoundation响应使用ob娱乐下载组件HttpKernel事件GetResponseForControllerResultEvent公共函数onKernelView(GetResponseForControllerResultEvent事件价值事件->getControllerResult ();响应反应();/ /……以某种方式从返回值定制响应事件->setResponse (响应);}

另请参阅

阅读更多有关kernel.view事件

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.view

kernel.response

事件类FilterResponseEvent

此事件在控制器或任何事件之后被分派kernel.view监听器返回一个响应对象。在发送回响应之前修改或替换响应是很有用的(例如,添加/修改HTTP报头,添加cookie等):

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

另请参阅

阅读更多有关kernel.response事件

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.response

kernel.finish_request

事件类FinishRequestEvent

事件之后分派此事件kernel.response事件。重置应用程序的全局状态是很有用的(例如,翻译器监听器将翻译器的locale重置为父请求之一):

1 2 3 4 5 6 7 8 9
公共函数onKernelFinishRequest(FinishRequestEvent事件如果===parentRequest->requestStack->getParentRequest ()) {返回;}//将子请求的语言环境重置为父请求的语言环境->setLocale (parentRequest);}

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.finish_request

kernel.terminate

事件类PostResponseEvent

方法的执行之后,在发送响应之后分派此事件处理()方法)。执行缓慢或复杂的任务(例如发送电子邮件)是很有用的,这些任务不需要完成来发送响应。

另请参阅

阅读更多有关kernel.terminate事件

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.terminate

kernel.exception

事件类GetResponseForExceptionEvent

在处理HTTP请求期间,一旦发生错误,就立即分派此事件。从错误中恢复或修改作为响应发送的异常详细信息非常有用:

12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载组件HttpFoundation响应使用ob娱乐下载组件HttpKernel事件GetResponseForExceptionEvent公共函数onKernelException(GetResponseForExceptionEvent事件异常事件->getException ();响应反应();//根据捕获的异常设置响应对象事件->setResponse (响应);//你也可以设置一个新的异常// $exception = new \ exception('一些特殊异常');/ /事件- > setException($除外);

请注意

TwigBundle注册了一个ExceptionListener这将转发请求控件定义的给定控制器exception_listener.controller参数。

ob娱乐下载Symfony使用以下逻辑来确定响应的HTTP状态代码:

请注意

如果您想覆盖异常响应的状态代码(如果没有充分的理由,您不应该这样做),请调用GetResponseForExceptionEvent: allowCustomResponseCode ()首先,然后在响应上设置状态代码:

1 2 3
事件->allowCustomResponseCode ();响应响应(没有内容的204);事件->setResponse (响应);

在上面的例子中,发送给客户端的状态代码将是204.如果事件- > allowCustomResponseCode (),则内核将根据抛出的异常类型设置适当的状态代码。

另请参阅

阅读更多有关kernel.exception事件

执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:

1
PHP bin/控制台调试:event-dispatcher kernel.exception
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。