Загрузка конфигурационного файла Symfony 2

Я хочу добавить новый файл конфигурации в Bundle / Resources / config. Я пробовал следовать http://symfony.com/doc/current/cookbook/bundles/extension.html , но он не работает так, как должен, и я получаю

Нет расширения, которое может загрузить конфигурацию для "mailbroker_mail_details"

Мои файлы:

MailbrokerMailDetailsExtension.php

<?php namespace Mailbroker\MailDetailsBundle\DependencyInjection; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\Config\FileLocator; use Symfony\Component\HttpKernel\DependencyInjection\Extension; use Symfony\Component\DependencyInjection\Loader; class MailbrokerMailDetailsExtension 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('canonisers.yml'); } public function getAlias() { return 'mailbroker_mail_details'; } } 

configuration.php

 <?php namespace Mailbroker\MailDetailsBundle\DependencyInjection; use Symfony\Component\Config\Definition\Builder\TreeBuilder; use Symfony\Component\Config\Definition\ConfigurationInterface; class Configuration implements ConfigurationInterface { /** * {@inheritDoc} */ public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $rootNode = $treeBuilder->root('mailbroker_mail_details'); $rootNode ->children() ->scalarNode('abc')->end() ->end() ; return $treeBuilder; } } 

canonisers.yml

 mailbroker_mail_details: abc: 123 

Конфигурация правильная (при размещении в app / config / config.yml она загружается так, как должна), canonisers.yml загружен правильно, но по какой-то причине я не могу заставить его работать вместе. Спасибо за вашу помощь!

Ну, я не пробовал, но вы должны иметь возможность использовать расширение Yaml для загрузки в файл canonisers.yml напрямую и добавить его в конфиги. Не рекомендуется (обходит файл кэширования приложения), но он может работать:

 use Symfony\Component\Yaml\Yaml; class MailbrokerMailDetailsExtension extends Extension { public function load(array $configs, ContainerBuilder $container) { $file = __DIR__.'/../Resources/config/canonisers.yml'; $configs = array_merge($configs,Yaml::parse(file_get_contents($file)); $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); .... 

Полностью непроверенный. Возможно, вам придется добавить в app / config / config.yml

 mailbroker_mail_details: ~ 

Просто чтобы пройти сообщение об ошибке. Не уверен.

Дайте мне знать, если это сработает.

Хорошо, поэтому @Iltar из канала #symfony irc указал мне на поваренную книгу: http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

Короче говоря, PrependExtensionInterface с предварительным методом.

Это было добавлено с тех пор, как я в последний раз читал книгу symfony и поваренную книгу, и в этом случае это было не совсем понятно, поэтому я просто оставлю ссылку здесь для других людей.