Интерактивные параметры из комплекта

Я разрабатываю свой первый пакет в Symfony2, это сервисы, которые используют некоторые параметры в своей конструкции и работали правильно, если я сохраню эту структуру, в AcmeBundle / Resource / конфигурации / parameters.yml:

parameters:
id: IDVAL
secret: SECRETVAL

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

Но мне интересно, есть ли способ использовать Интерактивное управление файлом parameters.yml, для установки пакета через использование composer AcmeBundle / Resource / config / parameters.yml.dist сделан вместо app / config / parameters.yml.dist

Приветствую и заранее благодарю.

1

Решение

Я не знаю способ сделать это через композитор, когда вы создаете многоразовый пакет.
Вместо этого вы можете настроить свой пакет на основе config.yml файл, используя Symfony’s Компонент конфигурации, и сделайте эти параметры обязательными, чтобы при установке пакета пользователь должен был предоставить эти параметры. Для вашего случая использования это будет что-то вроде:

// 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
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]