0

私は現在バンドルを持っており、そのパラメーターを/app/config/config.ymlファイルから定義します

foo:
   facebook:
       page: 
           name: %facebook_page_name%

次に、コントローラーで次の方法でアクセスします。

$this->container->getParameter('facebook.page.name');

今のところそれを機能させるために私がしたことはFooExtensionにあります

public function load(array $configs, ContainerBuilder $container)
{
    $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
    $loader->load('config.yml');
    $loader->load('services.yml');

    $configuration = new Configuration();
    $config = $this->processConfiguration($configuration, $configs);

    if (isset($config['facebook'])) {
        if (isset($config['facebook']['page'])) {
            if (isset($config['facebook']['page']['name'])) {
                $container->setParameter('facebook.page.name', $config['facebook']['page']['name']);
            }
        }
    }
}

あなたはこれが疲れ果てて苦痛であると私に同意するでしょう。どうすればそれを自動化できますか?私はどこでも検索しましたが、間違いなく私が見逃しているものがあります。しかし、何ですか?

4

2 に答える 2

1

設定でパラメータとして明示的に設定する場合を除いて、これがその方法です。

これが必須のツリー構造であり、バンドル内の構成クラスを介してすでに検証している場合でも、条件やissetをそれほどいじる必要はありません。

それは本当に苦痛でも疲れでもありません、それから遠く離れて、私は違うのが悲しいです。

于 2012-10-07T00:49:38.303 に答える
1

いくつかのパラメーターを渡す必要があるだけの場合は、デフォルト値、パラメーターの配列を提供したり、構成を確認したりするようなものはありません。次のようにいくつかのパラメーターを設定できます。

# app/config/config.yml
parameters:
    facebook.page.name:    %facebook_page_name%

次に、同じコードを使用してコントローラーにそれらを取得できます。

$this->container->getParameter('facebook.page.name');
于 2012-10-06T17:23:12.760 に答える