2016-12-14 3 views
0

Я изменил конфигурацию (config.yml) и хочу проверить, если она сработала.Как получить загруженную конфигурацию в приложении Symfony?

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

+0

Не существует объекта главной конфигурации, представляющего загруженную в настоящий момент конфигурацию. Symfony «компилирует» конфигурацию в кучу разных объектов. Это достаточно мощный и заслуживающий понимания: http://symfony.com/doc/current/configuration.html#learn-more Но нет ничего похожего на то, что я предполагаю, что вы ищете. – Cerad

+0

Спасибо за комментарий! Конечно, Symfony объединяет все конфиги и обрабатывает их. Но результатом является один большой вложенный объект или массив. В Zend Framework я могу: 1. увидеть все загруженные конфигурации в панели инструментов Zend Developer Tools и 2. получить все фактически загруженные конфиги из службы 'Config'. Поэтому я ожидал аналогичную функциональность в Symfony: 1. в панели инструментов Web Debug и 2. где-то в коде ('Controller'). – automatix

+0

Увы, в этом случае ваши ожидания приведут к разочарованию. – Cerad

ответ

1

Когда ваше приложение запускается в первый раз, Sf использует компонент HttpKernel для управления загрузкой конфигурации контейнера службы из приложения и пакетов, а также обрабатывает компиляцию и кеширование.

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

Больше информации на: http://symfony.com/doc/current/components/dependency_injection/workflow.html

Если сбросить $ this-> контейнер в контроллере, вы будете видеть все параметры внутри параметров частной собственности, в том числе параметров, определенных в файле parameters.yml и в конфигурации. YML

enter image description here

Давайте предположим, что вы хотите знать, что текущее значение параметра локали - вы можете написать эту

$this->container->getParameter('locale') 

Кроме того, все эти параметры сбрасываются в sf_root/var/cache/your_env/appDevDebugProjectContainer.xml

+0

Я попробовал, но некоторых конфигов там нет. Например: я определил 'twig cache: false' в my'/app/config/config_dev.yml' (файл загружен). Но 'container' (' var_dump ($ this-> container) 'в' Controller') не «знает» ничего об этом параметре. – automatix

+0

Извините, теперь я нашел его как 'originalCache'. Спасибо за помощь! – automatix

+1

Нет проблем. Кроме того, вы можете var_dump $ this-> container-> get ('twig'), чтобы получить дополнительную информацию о среде twig –

Смежные вопросы