内置Symfonyob娱乐下载事件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 5.2,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
内置Symfonyob娱乐下载事件
Symfob娱乐下载ony框架是一个HTTP请求-响应框架。在处理HTTP请求期间,框架(或任何使用HttpKernel组件)分派一些事件您可以使用它来修改处理请求的方式以及返回响应的方式。
内核事件
HttpKernel组件分派的每个事件都是KernelEvent,提供以下资料:
- getRequestType ()
-
返回类型的要求(
HttpKernelInterface: MASTER_REQUEST
或HttpKernelInterface: SUB_REQUEST
). - getKernel ()
- 返回处理请求的内核。
- getRequest ()
-
返回当前
请求
被处理。 - isMasterRequest ()
- 检查这是否是一个主请求。
kernel.request
事件类:RequestEvent
在Symfony中,此事件在确定控制器之前非常早地分派。ob娱乐下载向Request中添加信息或提前返回Response以停止对请求的处理是很有用的。
另请参阅
阅读更多有关kernel.request事件.
执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:
1
$PHP bin/控制台调试:event-dispatcher 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/控制台调试:event-dispatcher kernel.controller
kernel.controller_arguments
这个事件在控制器被调用之前被分派。配置要传递给控制器的参数是很有用的。通常,这用于将URL路由参数映射到相应的命名参数;或传递当前请求请求
找到Type-hint:
12 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/控制台调试:event-dispatcher kernel.controller_arguments
kernel.view
事件类:ViewEvent
此事件在控制器执行后被分派,但是只有如果控制器有不返回一个响应对象。将返回值(例如带有HTML内容的字符串)转换为响应
Symfony需要的对象:ob娱乐下载
12 3 4 5 6 7 8 9 10 11 12
使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\HttpKernel\事件\ViewEvent;公共函数onKernelView(ViewEvent$事件){$价值=$事件->getControllerResult ();$响应=新反应();/ /……以某种方式从返回值定制响应$事件->setResponse ($响应);}
另请参阅
阅读更多有关kernel.view事件.
执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:
1
$PHP bin/控制台调试:event-dispatcher kernel.view
kernel.response
事件类:ResponseEvent
此事件在控制器或任何事件之后被分派kernel.view
监听器返回一个响应
对象。在发送回响应之前修改或替换响应是很有用的(例如,添加/修改HTTP报头,添加cookie等):
1 2 3 4 5 6 7 8
使用ob娱乐下载\组件\HttpKernel\事件\ResponseEvent;公共函数onKernelResponse(ResponseEvent$事件){$响应=$事件->getResponse ();/ /……修改响应对象}
另请参阅
阅读更多有关kernel.response事件.
执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:
1
$PHP bin/控制台调试:event-dispatcher kernel.response
kernel.finish_request
事件之后分派此事件kernel.response
事件。重置应用程序的全局状态是很有用的(例如,翻译器监听器将翻译器的locale重置为父请求之一):
1 2 3 4 5 6 7 8 9 10 11
使用ob娱乐下载\组件\HttpKernel\事件\FinishRequestEvent;公共函数onKernelFinishRequest(FinishRequestEvent$事件){如果(零= = =$parentRequest=$这->requestStack->getParentRequest ()) {返回;}//将子请求的语言环境重置为父请求的语言环境$这->setLocale ($parentRequest);}
执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:
1
$PHP bin/控制台调试:event-dispatcher kernel.finish_request
kernel.terminate
事件类:TerminateEvent
方法的执行之后,在发送响应之后分派此事件处理()方法)。执行缓慢或复杂的任务(例如发送电子邮件)是很有用的,这些任务不需要完成来发送响应。
另请参阅
阅读更多有关kernel.terminate事件.
执行这个命令来找出哪些监听器为这个事件注册了,以及它们的优先级:
1
$PHP bin/控制台调试:event-dispatcher kernel.terminate
kernel.exception
事件类:ExceptionEvent
在处理HTTP请求期间,一旦发生错误,就立即分派此事件。从错误中恢复或修改作为响应发送的异常详细信息非常有用:
12 3 4 5 6 7 8 9 10 11 12 13 14
使用ob娱乐下载\组件\HttpFoundation\响应;使用ob娱乐下载\组件\HttpKernel\事件\ExceptionEvent;公共函数onKernelException(ExceptionEvent$事件){$异常=$事件->getThrowable ();$响应=新反应();//根据捕获的异常设置响应对象$事件->setResponse ($响应);//你也可以设置一个新的异常// $exception = new \ exception('一些特殊异常');/ /事件- > setThrowable($除外);}
请注意
TwigBundle注册了一个ErrorListener这将转发请求
控件定义的给定控制器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/控制台调试:event-dispatcher kernel.exception