2016-10-26 55 views
2

我正在使用Heroku託管我的Symfony 3應用程序。我將切換到需要我設置自定義證書的新數據庫提供程序。如何在Symfony中的config.yml中設置配置參數而不創建服務

我不想在版本控制下存儲證書,因此我決定編寫一個新的命令,從設置爲環境變量的URL下載部署證書文件。

要讀取環境變量,我在composer.json中使用incenteev-parameters,然後在parameters.yml處設置適當的值。但據我所知,無法直接從parameters.yml讀取此值,因此我必須在config.yml中使用我的新url參數parameters.yml,但這需要我創建一項新服務。

我只是想從我的新命令中讀取這個新的url參數,以便我可以在部署中下載我的證書。

回答

1

您可以從ContainerAwareCommand class擴展您的命令,並使用以下方式從parameters.yml訪問您的參數:

$this->getContainer()->getParameter('your_parameter_key'); 

或者你可以define your command as a service並注入所需的參數。

+0

只有當參數已被定義爲服務,但將該命令定義爲服務纔有效。我會盡力回覆你。 – tatsuhirosatou

+1

您無法將參數定義爲服務。您應該在parameters.yml中定義您的參數值,並使用我的答案中的某種建議方式從命令類中獲取它。請看看關於參數的Symfony文檔:http://symfony.com/doc/current/service_container/parameters.html –

+0

對不起,我不是指將參數定義爲服務。我的意思是你需要定義一個使用給定參數的服務。 '$ this-> getContainer() - > getParameter('your_parameter_key');'僅適用於給定服務使用的參數。用'$ this-> getContainer() - > getParameter('your_parameter_key');''不能在'config.yml'中使用'parameter.yml'中的某些服務來直接訪問'parameters.yml'上的內容。我用你的第二個建議,它的工作。 – tatsuhirosatou

相關問題