-1

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

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

一种天真的方法是:

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

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

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

这可行吗?特别是,树枝变量/服务和订阅者是否总是相同的?或者该服务可能是一个新创建的实例?

这是某种滥用吗?或者这种用例有官方推荐的方法吗?

编辑数据不仅需要在每个树枝模板中,而且在某些控制器中也需要。

4

1 回答 1

0

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

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

也许这些提示已经对您有所帮助。否则,请让我知道更多详细信息,在渲染期间您在哪里/如何需要数据。

于 2016-11-01T12:45:14.100 回答