Symfony2 - 将对象从Event Listener传递给Controller

时间:2015-10-12 11:33:04

标签: symfony controller

我有一个事件监听器,它在数据库中找到一个实体对象,检查当前用户是否有权使用它。我需要在Controller中进一步使用这个对象,所以我的问题是:将对象从事件监听器传递给Controller 的最佳方法是什么?

我有几种选择,但它们都不够好。

  1. 在Controller中,使用存储库第二次从数据库中获取相同的对象 - 实际上耦合较少,但会产生额外的数据库查询。
  2. 在事件侦听器中序列化对象,并在请求中将其传递给Controller。
  3. 在事件监听器中创建set()对象的服务,在控制器中创建get() - 但为此目的分配服务看起来像是架构缺陷。
  4. 也许有人有更好的解决方案?

1 个答案:

答案 0 :(得分:1)

事件监听器是一种与任何其他服务一样的服务。您可以将对象保存到受保护的服务成员,为其创建一个getter,并在控制器中获取此服务并使用getter检索对象