Как получить доступ к конфигурации пакета 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');