Как получить доступ к конфигурации пакета Symfony 2 извне пакета?

Пожалуйста, не ссылайтесь на Как показать семантическую конфигурацию для набора

Фактически, у меня уже есть полностью работающий пакет, со многими вариантами конфигурации. Пакет фактически настроен на app/config.yml, в его собственном разделе. Я уже реализовал ConfigurationInterface с его TreeBuilder и так далее. И я могу успешно внедрить конфигурацию в комплект и использовать его в коде пакета.

Тем не менее, то, что я хочу сделать, очень просто, но, несмотря на то, что у меня есть полностью работающий пакет, опубликованный и устанавливаемый с помощью Composer, я играл с Symfony 2 всего несколько недель, и, вероятно, ответ действительно смехотворно прост. но я этого не знаю!

Как я могу получить доступ к конфигурации пакета из моего контроллера приложения?

Например... это config в app/config.yml (где "устройства" имеют прототип массива):

my_bundle:
    format: standard
    devices:
        main:
            color: yellow
            capacity: 200

Как я могу получить доступ к этим значениям из контроллера приложения с помощью пакета?

Ответ 1

Вся конфигурация paggy_boleto.config в параметре paggy_boleto.config как вложенный массив. Чтобы получить доступ к нему, в контроллере:

$config = $this->container->getParameter('paggy_boleto.config');

var_dump config, чтобы увидеть, как вы var_dump доступ к записям в нем.

Если вам нужен доступ к другим конфигурациям bundle, вам нужно взглянуть в классе расширения Extensions, как они отображают конфигурацию в контейнере di. Некоторые пакеты, подобные вашим, предоставляют всю конфигурацию, некоторые другие пакеты не имеют (они выставляют только определенные параметры).

В PaggyBaletoBundle это соответствующая строка:

$container->setParameter('paggy_boleto.config', $config);

Ответ 2

Это зависит от того, как вы реализовали компоновщик компоновки компоновки - он добавляет свои параметры с определенным префиксом.

По вашему делу это paggy_boleto.config

Ответ 3

Для этой цели вы должны использовать parameters.yml. и тогда вы можете легко получить вещи в своем контроллере, как это

$parameters = $this->container->getParameter('devices');