2013-09-06 16 views
11

くださいが、実際にはHow to expose a Semantic Configuration for a Bundleバンドルの外からSymfony 2バンドル設定にアクセスするには?

にリンクしていない、私はすでに多くの設定オプションで、完全に動作するバンドルを持っています。バンドルは実際にはapp/config.ymlという独自のセクションで構成されています。私はすでにTreeBuilderを使ってConfigurationInterfaceを実装しています。そして、私はバンドルに設定を挿入してバンドルコードで使用することができます。

しかし、私がやりたいことは非常に簡単ですが、fully working bundleが公開され、Composerを使用してインストール可能ですが、私はSymfony 2を数週間しか使用していませんでした。おそらく答えは本当にばかげて簡単です...私はそれを知らない!

私のアプリケーションコントローラからバンドル設定にアクセスするにはどうすればよいですか?例えば

...(「デバイス」は、配列のプロトタイプを持っている場合)app/config.ymlで設定され、この:

my_bundle: 
    format: standard 
    devices: 
     main: 
      color: yellow 
      capacity: 200 

私はバンドルを使用して、アプリケーションのコントローラからこれらの値にアクセスするにはどうすればよいですか?

+0

のですか? (さらに、これを実現するためにバンドルコードを変更するのは本当にありません。) –

+0

そして、私はただ**設定値を**読みたいだけです。 –

+1

これは、バンドルのコンフィギュレーションビルダをどのように実装したかによって異なります。あなたの場合は 'my_bundle.devices'のようなものかもしれません。さもなければ、 'DependencyInjection/MyBundleExtension.php'のコードを投稿できますか? –

答えて

9

のようなあなたのコントローラで物事を得ることができます。コントローラには、これにアクセスするには:

$config = $this->container->getParameter('paggy_boleto.config'); 

var_dump設定は、あなたがそれでエントリへのアクセス方法を、確認してください。

他のバンドル設定にアクセスする必要がある場合は、バンドルExtensionクラスを見て、どのように設定をdiコンテナに公開するかを調べる必要があります。あなたのようないくつかのバンドルはconfig全体を公開し、他のバンドルは(特定のパラメータだけを公開します)バンドルしません。

はPaggyBaletoBundleでは、これは、関連するlineです:

$container->setParameter('paggy_boleto.config', $config); 
+0

ありがとう!私はそれが簡単だと分かっています。私はSymfony 2で1〜2週間プレイした後、Laravel + Angular.JSに切り替えました。Symfony 2に戻ってしまいました。 –

0

そのためには、parameters.ymlを使用する必要があります。 その後、あなたは簡単に全体の設定は、ネストされた配列としてパラメータpaggy_boleto.configにさらされているこの

$parameters = $this->container->getParameter('devices'); 
+0

本当に[email protected]は正しい方向に私を指摘しました...そして、私は既にそれを持っています:semanticにアクセスする必要があるなら '$ this-> container-> getParameter( 'paggy_boleto.config'); ' –

+0

parameters.ymlは機能しませんバンドル構成。 –

3

それはあなたがバンドルの設定ビルダーを実装する方法によって異なり - それは、特定の接頭辞で、そのパラメータを付加します。

your caseによると、それは私がバンドル内部から設定を暴露すると考え...しかし、私は、バンドルの作者何をしなかった場合paggy_boleto.config

+0

+1あなたが本当に助けてくれました。ここにあなたのコメントが載っていたので、私が答えを "発見"することができました。私はPaziのものを受け入れました。なぜなら彼は詳細な答えを書いたからです。私はあなたに多くをありがとう、私は両方の答えを受け入れることができ、あなたに100のrepのポイントを与えることを望む。千!だから、ポイントはパジに行きますが、あなたは私の感謝と祝福を持っています! –

+0

@ J.ブリュニハハ、ありがとう、男:D –