1

私は Symfony2 で最初のバンドルを開発しています。これは、その構築にいくつかのパラメーターを使用するサービスであり、AcmeBundle/Resource/config/parameters.ymlでこの構造を保持していれば適切に機能していました。

parameters:
    id: IDVAL
    secret: SECRETVAL

services:
    my_service:
        class: MyClass
        arguments: [%id%, %secret%]

しかし、app/config の代わりに作成された composer AcmeBundle/Resource/config/parameters.yml.dist を使用してバンドルをインストールするために、 parameters.yml File の Interactive Management を利用する方法があるかどうか疑問に思います/parameters.yml.dist

よろしくお願いします。

4

1 に答える 1

1

再利用可能なバンドルを作成しているときに、作曲家を介してそれを行う方法がわかりません。代わりに、symfony のConfiguration Component
を使用 して、ファイルに基づいてバンドルを設定し、これらのパラメーターを必須にすることができます。この方法では、バンドルがインストールされているときに、ユーザーはそれらのパラメーターを提供する必要があります。あなたのユースケースでは、次のようになります。 config.yml

// in YourBundle\DependencyInjection\Configuration
public function getConfigTreeBuilder(){
  $treeBuilder = new TreeBuilder();
  $rootNode = $treeBuilder->root('your_bundle_alias');
  $rootNode
    ->children()
      ->scalarNode('param1')->isRequired()->end()
      ->scalarNode('param1')->isRequired()->end()
    ->end();
 }

// in YourBundle\DependencyInjection\YourExtension
public function load(array $configs, ContainerBuilder $container){

  $configuration = new Configuration();
  $config = $this->processConfiguration($configuration, $configs);
  // ...
  // get the parameters entered in the config file, and configured above
  $param1 = $config['param1'];
  $param2 = $config['param2'];
  // inject them into my_service
  $container->getDefinition('my_service')
    ->setArguments(array($param1, $param2));
// ...
}

バンドル構成をこのように記述すると、ユーザーconfig.ymlは次のようにバンドルのエントリをファイルに入力する必要があります。

your_bundle_alias:
  param1: the_users_value
  param2: another_value
于 2015-08-07T13:40:17.867 に答える