Мне было интересно, можно ли определить файл parameters.yml для каждого пакета или только для пакетов, которые в нем нуждаются, и загрузить их.
Я много искал, но я не могу найти такое решение.
Вы должны немного разъяснить; вы хотите, чтобы каждый пул автоматически включал файл parameters.yml
? Боюсь, вам нужно будет изменить ядро DI Symfony. Однако есть и легкая альтернатива.
Если вы создаете свой собственный пакет с помощью DependencyInjection
вы можете добавить $loader->load('parameters.yml');
в классе расширения пакета.
Класс расширения должен быть расположен в YourBundle/DependencyInjection/YourBundleExtension.php
.
Класс должен выглядеть следующим образом:
class YourBundleExtension extends Extension { /** * {@inheritDoc} */ public function load(array $configs, ContainerBuilder $container) { $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); $loader = new Loader\YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config')); $loader->load('services.yml'); $loader->load('parameters.yml'); // Adding the parameters file } }
Поэтому в этом случае файл parameters.yml
будет находиться в YourBundle/Resources/config/parameters.yml
.
Если вы просто хотите включить файл параметров из комплекта в свою конфигурацию, просто следуйте нормальному формату для импорта дополнительных файлов конфигурации из пакетов (приложение по умолчанию показывает, как это сделать с маршрутизацией). Обновите конфигурацию, чтобы включить файл параметров следующим образом:
imports: - { resource: parameters.yml } - { resource: @YourBundle/Resources/config/parameters.yml } - { resource: security.yml } - ...
Файл параметров должен соответствовать тому же формату, что и по умолчанию:
parameters: my.parameter: "my value"