[英]Symfony 2.8 Global variable
我正在使用 Symfony 2.8,但没有找到任何可以解决我的问题的方法。
为简单起见,我有一个 Payment 实体,我需要一个用于 VAT 的全局变量。
我的问题是:有没有办法让我的所有支付实体都有一个公共变量,知道它可以由管理员稍后在 Web 应用程序中修改? 我认为服务参数(我正在使用)不会成功。 至少,我没有找到任何关于如何动态修改它的信息。
这是我的 service.yml 的一部分:
parameters:
app_tva: 20
在 Symfony 中使用真正的全局变量( global $parameter
)——这是个坏主意,因为所有系统都在范围内工作(请求、控制台等...),并且每个范围都有针对此范围的自定义服务(例如@request
)。
但是,如果您想在应用程序中使用 config 参数,则可以使用:
解决方案#1(使用app/config/parameters.yml
):
如果参数不是动态的,并且很少更改,则此解决方案变化良好。
parameters.yml
添加自定义parameters.yml
$container ->getParameter('some_parameter')
获取这个参数解决方案#2(对自定义参数使用工厂服务)
在我的应用程序中,我使用自定义层来配置公共服务,因为许多参数是动态的,并且可以针对每个请求或用户或其他条件进行更改。
Acme\\DemoBundle\\Config\\AppConfig
作为示例。getVat
添加到此服务。解决方案 #3(使用 Doctrine 事件)
所以,这不是一个好主意,但可以在任何系统中工作。
如果您想计算价格,或其他实体操作,您可以在完成加载实体后注入自定义参数。
注意:此方法仅在通过学说加载实体后才有效!
postLoad
事件中向您的实体注入自定义变量。doctrine.event_subscriber
或doctrine.event_listener
聚苯乙烯
我会使用解决方案#2,因为这是一个很好的变体,我们可以将这个参数存储在任何地方(数据库、redis、parameters.yml 等),我们可以为每个条件(请求、用户、国家、时区等...)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.