Symfony:如何处理常见的请求范围数据



我正在将一个遗留的PHP项目(pre-OO)迁移到Symfony2。对于每个请求,我必须:

  • 计算一些动态数据(取决于当前日期和/或某些请求参数)
  • 在渲染的响应中使用该数据(多次!)

一种简单的方法是:

  • 在每个控制器方法开始时,调用一些全局辅助函数来计算数据。
  • 在每个控制器方法结束时,将数据作为参数传递给小枝模板。

听起来乏味。也许这样做会更好:

  • 为请求事件创建一个订阅者,该订阅者在请求进入时计算数据,并通过getter方法提供对它的访问。
  • 将该用户/服务定义为config.yml中的全局分支变量。
  • 在小模板中,根据需要调用服务的getter方法。

可行吗?特别是,小枝变量/服务和订阅者是否总是相同的?或者服务可以是新创建的实例?

这是不是某种误用?或者对于这样的用例是否有官方推荐的方法?

EDIT这些数据不仅在每个小枝模板中都需要,而且在一些控制器中也需要。

在每个Controller-Action中调用特定的方法确实是一个糟糕的解决方案。你使用订阅者的解决方案也不完美。

如果不详细了解您的用例,很难找到合适的方法。也许一种方法是编写一个分支扩展并向该扩展注入一个服务。服务将通过依赖注入获得请求堆栈并计算相关数据。然后,您可以在渲染期间通过树枝扩展"按需"访问这些数据。另一种方法是在呈现过程中使用子请求(Symfony:如何处理常见的请求范围数据)

也许这些技巧已经对你有所帮助了。否则让我知道更多的细节,在渲染过程中你需要的数据在哪里/如何。

最新更新