我正在寻找在应用程序中公开配置设置的方法,我可以在任何捆绑包中添加我想要的内容。这样做的目的是向HTML公开几个东西,解析它并在JS中使用。
基础部分ConfigService
可以添加ConfigUnit
自己的逻辑。
ConfigServiceInterface:
public function getConfig();
public function addUnit(ConfigUnitInterface $unit);
ConfigUnitInterface:
public function getName();
public function getConfig();
最好是在service.yml
中添加单位,如下所示:
services:
service.config:
class: ConfigService
calls:
- [ addUnit, [ "@unit" ] ]
- [ addUnit, [ "@unit2" ] ]
但是配置服务应该在某个包中声明,开发人员不能更改它的声明。
我想到的第二件事是声明具有调用寄存器方法的单元,它将ConfigService
作为参数。
config_unit:
class: ConfigUnit
arguments: [...]
calls:
- [ register, [ "@service.config" ] ]
但是这并不好,我必须将此服务提供给init调用,所以每次都必须从容器中获取它。
有没有办法自动执行此操作?并尽可能分开?
也许事件对此很好,但我不想让开发人员直接修改配置数组。
答案 0 :(得分:0)
我发现了怎么做。
文档有助于:
我的每个单元现在都标有:' config.unit'
config_unit:
class: ConfigUnit
arguments: [...]
tags:
- { name: config.unit }
这些由CompilerPass
处理并注入ConfigService