我的团队开发了一个非常大的电子商务项目。到目前为止,我们在该包中有40个配置参数,我不知道它们的最终关系,也没有办法正确构建它们,所以我们最终使用了app/config.yml
文件中的标准参数结构。 但是,在我决定将配置移动到语义配置结构的某个地方 - 所以我可以验证它,有一个干净的结构,可以通过bundle继承等方式轻松扩展它。Symfony2软件包配置参数
问题是我现在无法将我们的bundle参数导入到另一个bundle config。
这是我能做什么之前:
(...)
parameters:
company.bundle.email.user: [email protected]
company.bundle.email.pass: @MyBeAUtiFULpA55w0Rd!
(...)
swiftmailer:
(...)
username: %company.bundle.email.user%
password: %company.bundle.email.pass%
这里就是我想现在要做的,并没有在所有的工作:
(...)
company_bundle:
(...)
settings:
(...)
mailer:
(...)
user: [email protected]
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包中使用它我们用。所以我想所有的应用程序配置都可以在我们的bundle的语义conf中访问,因为我不想把整个配置公开给那个人(我已经把所有的东西都分成了单独的配置文件,其中一个包含配置我们的捆绑包,其他 - 所有其他的)。
那么,我问的是甚至可能吗?
软件包不能共享配置值。如果你想这样做,你需要修改配置的工作方式。我建议的方式是在那里有一个带'parameters'的单个文件,然后在你需要它们的“真实”配置文件中使用这些值。 – Sgoettschkes