我的團隊開發了一個非常大的電子商務項目。到目前爲止,我們在該包中有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