2016-10-26 7 views
2

私はHerokuを使ってSymfony 3アプリケーションをホストしています。カスタム証明書を設定する必要がある新しいデータベースプロバイダに切り替えるつもりです。symfonyのconfig.ymlでサービスを作成せずに設定パラメータを設定する方法

私はバージョン管理下に証明書を格納したくないので、環境変数として設定されているURLから展開時に証明書ファイルをダウンロードする新しいコマンドを書くことにしました。

incenteev-parameterscomposer.jsonに設定すると、適切な値がparameters.ymlに設定されます。しかし、私が知る限り、この値をparameters.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でパラメータ値を定義し、私の答えから提案された方法の1つを使用してコマンドクラスから取得する必要があります。パラメータについてのsymfonyのドキュメントを見てください:http://symfony.com/doc/current/service_container/parameters.html –

+0

申し訳ありませんが、私はパラメータをサービスとして定義することを意味しませんでした。私が意味することは、指定されたパラメータを使用するサービスを定義する必要があるということです。 '$ this-> getContainer() - > getParameter( 'your_parameter_key');'は、指定されたサービスによって使用されるパラメータに対してのみ機能します。 'config.yml'でそのパラメータを使用するサービスがない限り、' $ this-> getContainer() - > getParameter( 'your_parameter_key');で 'parameters.yml'上のものに直接アクセスすることはできません。私はあなたの2番目の提案を使用し、それは働いた。 – tatsuhirosatou

関連する問題