Intereting Posts
Объединение нескольких смежных прямоугольников в один многоугольник Какое время использовать real_escape_string? Когда данные поступают в POST или непосредственно перед составлением запроса? Выполнение запроса HTTP GET с проверкой подлинности HTTP-Basic Как получить позицию соответствия регулярного выражения в строке? .htaccess не может анализировать PHP в файлах HTML в корневой папке setlocale не влияет на PHP Профилирующий код по производству браузер игнорирует обновление заголовка из ответа ajax переместить элементы массива на основе условия в php Защищенные страницы с PHP / .htaccess? PHP / MYSQL – Подготовленные утверждения MySQLi – Можно использовать bind_param для ORDER BY? (упорядочение набора результатов) SQLSTATE : Общая ошибка: 1366 Неправильное целочисленное значение: любое решение? codeigniter: почему это происходит, когда i echo base_url () в атрибуте href тега привязки, он повторяет два раза php array в url от json PHP заменяет слова на ссылки, кроме изображений

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

Я создаю расширение для загрузки файлов конфигурации из всех установленных пакетов.

мое расширение выглядит следующим образом:

namespace Acme\MenuBundle\DependencyInjection; // use ... use Acme\MenuBundle\DependencyInjection\Configuration; class AcmeMenuExtension extends Extension { public function load(array $configs, ContainerBuilder $container) { $configuration = new Configuration(); $config = $this->processConfiguration($configuration, $configs); $finder = new \Symfony\Component\Finder\Finder(); $finder ->directories() ->in($container->getParameter('kernel.root_dir') . '/../src/*/*Bundle/Resources') ->path('config'); $possibleLocations = array(); foreach ($finder as $c_dir) { $possibleLocations[] = $c_dir->getPathName(); } $loader = new Loader\YamlFileLoader($container, new FileLocator($possibleLocations)); $loader->load('menu.yml'); } } 

И тогда есть мой (очень простой) класс конфигурации: в будущем я добавлю более сложное дерево, но сейчас я хочу, чтобы он работал с этим:

 namespace Acme\MenuBundle\DependencyInjection; // use ... class Configuration implements ConfigurationInterface { public function getConfigTreeBuilder() { $treeBuilder = new TreeBuilder(); $rootNode = $treeBuilder->root('mw_menu'); $rootNode ->children() ->scalarNode('mw_menu')->defaultValue('')->end() ->end(); return $treeBuilder; } } 

Для тестирования я только разместил файл «menu.yml» внутри текущего MenuBundle \ Resources \ config с этим контентом:

 # file: src\Acme\MenuBundle\Resource\config\menu.yml mw_menu: "some teststring" 

Для ручного тестирования я использую testAction в контроллере по умолчанию, который фактически ничего не делает, но создает пустой шаблон.

Во всяком случае, я получаю эту ошибку:

 InvalidArgumentException: There is no extension able to load the configuration for "mw_menu" (in {path to symfony}/app/../src/Acme/MenuBundle/Resources\config\menu.yml). Looked for namespace "mw_menu", found none 

Как я могу это исправить?

Из того, что я сейчас понимаю, Symfony замечает ключ «mw_menu» в файле конфигурации, но не может найти соответствующую конфигурацию.

Я работал над статьей поваренной книги: как выявить семантическую конфигурацию?

Обратите внимание: я знаю о наборе меню Knp и подобных пакетах, но я хочу реализовать меню самостоятельно.

Кроме того, я нашел это уведомление. Он прав?

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

Это потому, что ваш код:

 $rootNode = $treeBuilder->root('mw_menu'); $rootNode ->children() ->scalarNode('mw_menu')->defaultValue('')->end() ->end(); 

означает, что файл конфигурации должен выглядеть следующим образом:

 mw_menu: mw_menu: "some teststring" 

Пример:

Чтобы быть более конкретным, вам нужно адаптировать свой код к любому узлу, который вы хотите. В общем, люди используют общий корень, например mw_menu , а затем вторичное значение, например database_driver в следующем примере:

 $rootNode = $treeBuilder->root('mw_menu'); $rootNode ->children() ->scalarNode('database_driver')->defaultValue('orm')->end() ->end(); 

Тогда это будет выглядеть в файле конфигурации:

 mw_menu: database_driver: mongo_db