Перейти к основному содержимому

Автоматическая загрузка конфигураций и определений маршрутов

По умолчанию Symfony не загружает конфигурации и/или определения маршрутов (routing) напрямую из бандлов. Вместо этого предполагается, что вы определяете всё в основной директории config/ (при необходимости импортируя файлы из бандлов или других мест). Pimcore расширяет этот механизм, пытаясь автоматически загрузить файлы config.yaml и routing.yaml (также поддерживаются форматы .php и .xml) из каждого активного бандла, если они расположены в директории config/pimcore/ внутри бандла. Используя этот механизм автозагрузки, вы можете поставлять настройки маршрутизации и конфигурации прямо внутри вашего бандла.

При загрузке конфигурации Pimcore сначала пытается найти файл, специфичный для текущей среды (например, config_dev.yaml), в каждом бандле. Если такой файл не найден, система откатывается к базовому файлу config.yaml. Если в директории существуют несколько файлов с разными расширениями для одной задачи, будут загружены все.

Например, если бандл содержит и config_dev.yaml, и config_dev.php, оба файла будут загружены. В этом случае попытка загрузить файл без указания среды (просто config.yaml) предприниматься не будет.

Логика работы локатора конфигураций из Pimcore\Config\BundleConfigLocator:

/**  
* Находит конфигурации в бандлах, если существует директория Resources/config/pimcore.
*
* Сначала система пытается найти файлы по маске <имя>_<среда>.<расширение>. Если поиск для конкретной
* среды не дал результатов, выполняется поиск по маске <имя>.<расширение>. Проверяются все известные
* расширения, поэтому если существуют и config.yaml, и config.php, будут использованы оба.
*
* Пример: Поиск конфигурации (config) попытается найти следующие файлы в каждом бандле (и вернет все найденные):
*
* - Resources/config/pimcore/config_dev.php
* - Resources/config/pimcore/config_dev.yaml
* - Resources/config/pimcore/config_dev.xml
*
* Если предыдущий поиск не дал результатов, система перейдет к поиску файлов по умолчанию:
*
* - Resources/config/pimcore/config.php
* - Resources/config/pimcore/config.yaml
* - Resources/config/pimcore/config.xml
*/
class BundleConfigLocator {}


Вы можете предложить улучшение документации или задать вопрос в комментариях.
Если вам нужна полноценная консультация — вы можете заказать её на нашем сайте.