2016-07-12 62 views
3

我想將一個YAML配置注入Symfony中的服務。目前,我注入了我的包的路徑以及文件的相對路徑,並用Yaml::parse來手動解析它,但是有沒有更簡單的方法來完成此操作?
所以目標是服務的構造函數會接收已經解析過的YAML配置數組。是否可以將YAML文件注入Symfony中的服務?


把一些更詳細的瞭解吧:

目前,我有一個Resources目錄YAML文件在我的包,並在服務解析它,我用的是這樣的:

$yamlFile = sprintf(
     '%s/%s', 
     $container->get('kernel')->getBundle('MyBundle')->getPath(), 
     $pathToFile 
); 

所以我必須注入容器(可以以某種方式注入包的路徑?)和文件的路徑。我不介意稍微重構我的系統,例如把yaml文件放在bundle的config目錄下,如果這樣做會有所幫助,但我想保持它與其他配置分開。

+0

作爲一種替代方案,我可以考慮創建一個特殊的服務,我可以使用這些參數進行注入,並讓它負責解析,然後從中解析出數據。但是這似乎是Symfony中可能已經解決的一項任務。 – Czechnology

+1

我沒有看到配置文件的確切要求,但如果您不介意使用與位於app/config中的常規配置文件相同的格式,則不會在應用程序/配置中添加足夠的額外資源,即使在你想從服務中調用它? 進口: - {資源: '%kernel.root_dir%/ parameters.yml'} http://symfony.com/doc/current/cookbook/configuration/configuration_organization.html –

+1

@ScalatronMotoroller我明白我可以創建另一個配置文件並像那樣導入它,但由於它只與一個bundle的一部分相關,所以將它與項目的根連接似乎不正確。順便說一句,你發佈的例子來自一個部分,他們表明它不像這樣動態工作。 – Czechnology

回答

3

您可以像在此處所述那樣加載所需的軟件包擴展:http://symfony.com/doc/current/cookbook/bundles/extension.html並將其保存到新參數,或者注入到您喜歡的任何服務中。

+0

看起來像最好的解決方案...除了我已經花了幾個小時已經與「_沒有擴展能夠加載配置... ...」錯誤。我已經按照我所能找到的所有參考資料進行了操作,但仍無法使擴展工作。 – Czechnology

+0

如果有人有提示,我會很感激:https://stackoverflow.com/questions/38361084/ – Czechnology

相關問題