我的团队开发了一个非常大的电子商务项目。到目前为止,我们在那个包中有大约 40 个配置参数,我不知道它们的最终关系,也没有办法正确地构造它们,所以我们最终使用了app/config.yml
文件中的标准参数结构。但是,在此过程中,我决定将配置移至语义配置结构——这样我就可以验证它,拥有一个干净的结构,通过捆绑继承等方式轻松扩展它。
问题是我现在无法将我们的包参数导入另一个包配置。
这是我以前可以做的:
(...)
parameters:
company.bundle.email.user: user@domain.com
company.bundle.email.pass: @MyBeAUtiFULpA55w0Rd!
(...)
swiftmailer:
(...)
username: %company.bundle.email.user%
password: %company.bundle.email.pass%
这是我现在正在尝试做的事情,但它根本不起作用:
(...)
company_bundle:
(...)
settings:
(...)
mailer:
(...)
user: user@domain.com
pass: @MyBeAUtiFULpA55w0Rd!
(...)
swiftmailer:
(...)
username: %company_bundle.settings.mailer.user%
password: %company_bundle.settings.mailer.pass%
(...)
当然,company_bundle
节点包含语义配置,由 DIC 处理并在Company\Bundle\DependencyInjection\Configuration.php
.
我现在得到的只是以下错误:
[Symfony\Component\DependencyInjection\Exception\ParameterNotFoundException]
You have requested a non-existent parameter "company_bundle.settings.mailer.user".
所以问题是:如何使我的包参数可以在另一个包配置参数中访问(我已经注意始终在 Swiftmailer 包之前包含我的包配置)?
注意:这里显示的 Swiftmailer 包配置仅用于演示目的,我也希望能够在其他一些包中重用我的包参数。
这背后的动机是什么?
好吧,我希望我们的产品由一个不太了解 Symfony 的人配置 - 所以她必须能够打开我们的包配置文件并调整参数,然后这些参数将用于我们使用的一些 Symfony 包。所以我希望所有应用程序配置都可以在我们的包的语义配置中访问,因为我不想将整个配置暴露给那个人(我已经将所有内容分成单独的配置文件,其中一个包含我们的包的配置,其余的 - 对于所有其他的)。
那么,我要问的可能吗?