Symfony 3.4: Как получить доступ к конфигурации пакета в YAML

Я хотел бы спросить, есть ли способ получить доступ к конфигурации пакета из YAML этого пакета.

В частности, при реализации Symfony\Component\Config\Definition\ConfigurationInterface я определяю, что мой пакет нуждается в некоторой настройке. Пользователь помещает эту конфигурацию в свой app/config/bundles/my_bundle.yml со всеми ключами, которые мне нужны для моего пакета.

my_bundle: magic_key: '42'

Сейчас у меня в бандле Resources/config/services.yml в котором я настраиваю некоторые сервисы и мне нужен magic_key для одного из них.

Поскольку я знаю, что magic_key установлен (из-за ConfigurationInterface), теперь я могу получить доступ к этому ключу в классе, расширяющем Symfony\Component\HttpKernel\DependencyInjection\Extension, получить определение конкретной службы и установить аргумент для этого.

Однако я хотел бы сделать это в Resources/config/services.yml, расположенном в моем комплекте, вместо использования класса и Extension. Я прочитал на https://symfony.com/doc/3.4/service_container/expression_language.html, что это возможно с помощью функций parameter или container, но я не могу этого сделать.

Причина этого в том, что я хочу настроить свои пакетные службы в одном месте — файле YAML — в отличие от текущей ситуации, когда он разделен между YAML и Extension.php.

Это действительно возможно? Каков правильный синтаксис?


person meridius    schedule 17.09.2018    source источник


Ответы (1)


вам нужно добавить свою конфигурацию в параметры вашего класса MyBundleExtension следующим образом:

public function load(array $configs, ContainerBuilder $container)
{
    $container->setParameter('my_bundle', $config);
}

Затем вы можете добавить «%my_bundle%» в аргументы службы.

person Loïc Ovigne    schedule 17.01.2019
comment
Спасибо, но это просто передает весь массив конфигурации службе. - person meridius; 18.01.2019