如何在Symfony中创建路由事件处理程序

时间:2019-05-06 17:04:13

标签: symfony routing

我想知道在发出针对特定路由的请求时是否可以执行代码。我最近学会了使用类似于我要创建的身份验证器执行身份验证,但出于安全性考虑:您可以在security.yml中指定身份验证器拦截哪些路由,也可以在supports()方法中手动进行。在我的情况下,我具有用于将新资源添加到数据库(POST请求)的路由“ test_route”,但我也想生成用户通知。我可以只在控制器的操作中创建通知对象,也可以通过在操作中被调用的服务创建通知对象,但是我有很多这样的用例,我想集中执行。我想知道我是否可以有一个文件,可以在其中指定处理程序将在其上触发的路由。

1 个答案:

答案 0 :(得分:0)

看看Symfony's built-in events。您可以将EventListener添加到kernel.requestkernel.controller中。

正如@Jakumi在他的评论中提到的,延迟通知的发送可能是合理的,即使其异步。 Symfony在最近才引入了messenger component,这将有助于实现这一目标。

总结一下:

  1. 添加一个EventListener来侦听内核事件之一。
  2. 已将消息发送到队列中。
  3. 实现一个处理程序,该处理程序将异步发送此消息。