我正在使用Symfony 2.8,但我没有找到任何解决问题的方法。
为简单起见,我有一个Payment实体,我需要有一个增值税的全局变量。
我的问题是:有没有办法让所有我的付款实体都有一个公共变量,知道以后管理员可以在网络应用程序中对其进行修改?我不认为服务参数(我正在使用)将成为它。至少,我没有找到任何关于如何动态修改它的内容。
这是我service.yml的一部分:
parameters:
app_tva: 20
答案 0 :(得分:1)
在Symfony中使用真正的全局变量(global $parameter
) - 这是一个不同的坏主意,因为所有系统都在范围内工作(请求,控制台等等),并且每个范围都有此范围的自定义服务({ {1}}例如。)
但是,如果你想在你的应用程序中使用config参数,那么你可以使用:
解决方案#1(使用@request
):
如果参数不是动态的,并且很少更改,则此解决方案会有所不同。
app/config/parameters.yml
parameters.yml
解决方案#2(使用工厂服务获取自定义参数)
在我的应用程序中,我使用自定义图层进行常见配置 服务,因为许多参数是动态的,并且可以更改 每个请求或用户或其他条件。
$container ->getParameter('some_parameter')
为例。Acme\DemoBundle\Config\AppConfig
添加到此服务。解决方案#3(使用学说事件)
所以,这不是一个好主意,但可以在任何系统中使用。
如果要计算价格或使用实体进行其他操作,可以在完成加载实体后注入自定义参数。
注意:此方法仅在通过doctrine加载实体后才有效!
getVat
事件中向您实体注入自定义变量。postLoad
或doctrine.event_subscriber
<强> P.S。强>
我会使用Solution#2,因为这是一个不同的好变种,我们可以将这个参数存储在任何地方(database,redis,parameters.yml等),我们可以为每个条件更改此参数(请求,用户,国家,时区等......)