2016-08-10 10 views
1

これはばかげた質問かもしれないが、私はこのデータにアクセスする方法を見ることができません。symfonyの:どのようにコントローラで設定にアクセスする

メインアプリ/設定/ config.ymlでは、私は一般的な構成を持っています私のアプリケーションのデータ。私のカスタムバンドルで

parameters: #accessible by getParameter() 
    locale: fr 
    # ... 
fos_user: #accessible by ??? 
    #... 
    registration: 
     form: 
      from_email: 
       address:  [email protected] 
       sender_name: TheSenderName 

私はそのconfig.ymlファイルからパラメータにアクセスすることができます

$this->container->getParameter('locale'); //gives me "fr" as expected 

しかし、どのように私は非パラメータの設定値にアクセスすることができますか?

私は、TE FOSユーザーバンドルの設定で定義されたアドレスを取得するためにここにたいと思います: 私は

$admin_adress = $this->container->getParameter('fos_user.registration.confirmation.from_email.address'); 

thosesにアクセスするための正しい方法は何を行うことはできませんか?

編集: はいこの設定データは、FOS User Bundle(ここの例では任意ですが)、コントローラ内、またはバンドル内のものにアクセスしたいと思います。ソリューションの

+0

設定ファイル(プラスベンダーから露出パラメータ)ののみparametersセクションにアクセスすることができ、あなたが作ったバンドルのためにこれを必要としていますか? –

+1

愚かな質問。まあ、実際にはありません。 getParameterで直接アクセスできるのはパラメータだけです。バンドル自体が利用可能にならない限り、通常の設定は利用できません。あなたの最善の策は、from_emailをパラメータとして定義することです。あるいは、バンドルを掘り下げてどこかに暴露されているかどうかを確認してください。 – Cerad

+0

バンドル設定と拡張クラスを使用してパラメータとしてそれらを設定できませんでしたか? –

答えて

0

あなたはそのように行動することができ、それを釘付けと思います

parameters: 
    locale: fr 
    fos_user: 
     registration: 
      form: 
       from_email: 
        address: [email protected] 
    # ... 
fos_user: 
    #... 
    registration: 
     form: 
      from_email: 
       address:  %fos_user.registration.form.from_email.address% 
       sender_name: TheSenderName 

もちろん、コントローラ名に合わせてこの名前を選択しましたあなたは他の鍵を選ぶことができます。

ただしcontainer->getParameterであなたは

0

一つは、そのようなあなたのパラメータを注入、サービスとしてあなたのコントローラを渡すことができます。

# services.yml 
my.amazing.controller: 
    class: CompanyFirst\LabBundle\Controller\PloufController 
    arguments: 
     - '@filesystem' 
     - '%dump_file_convention%' // your config parameter 
1

を私はthis question

class MyProjectExtension extends Extension 
{ 
    public function load(array $configs, ContainerBuilder $container) 
    { 
     // The next 2 lines are pretty common to all Extension templates. 
     $configuration = new Configuration(); 
     $processedConfig = $this->processConfiguration($configuration, $configs); 

     // This is the KEY TO YOUR ANSWER 
     $container->setParameter('from_email.address', $processedConfig[ 'registration.confirmation.from_email.address' ]; 

     // Other stuff like loading services.yml 
    } 
関連する問題