Symfony2: сторонний пакет не доступен в моем комплекте config.yml

Проблема

Почему конфигурация winzou (сторонняя) недоступна для моего config.yml в комплекте?

Выдает «Нет расширения, способного загрузить конфигурацию winzou …»

Обновления

http://symfony.com/doc/current/cookbook/bundles/prepend_extension.html

Похоже, что это конечный результат, которого я хочу достичь — быть обработанным как его предварительно добавленный / добавленный к приложению config.yml.
Я могу загрузить файл и добавить его … но я чувствую, что Symfony уже позволяет загружать дополнительные конфиги для каждого пакета … должен быть более простой способ загрузить его.


Я загружаю пакет машин winzou:
/app/AppKernel.php

new winzou\Bundle\StateMachineBundle\winzouStateMachineBundle(),

Затем я загружаю конфиг из моего пакета (OrderBundle).
/src/OrderBundle/DependencyInjection/OrderExtension.php

class OrderExtension extends Extension
{
public function load(array $configs, ContainerBuilder $container)
{
$loader = new YamlFileLoader($container, new FileLocator(__DIR__.'/../Resources/config'));
$loader->load('config.yml');
}
}

Если я помещу конфигурацию statemachine в конфигурацию OrderBundle:
/src/OrderBundle/Resources/config/config.yml

winzou_state_machine:
order_state_machine:
...

Исключение выдается:

There is no extension able to load the configuration for "winzou_state_machine" (in [...]/OrderBundle/DependencyInjection/../Resources/config/config.yml). Looked for namespace "winzou_state_machine", found none

Хорошо, если я помещу конфигурацию конечного автомата в корневые папки приложений.
/app/config/config.yml

1

Решение

Это не работает, потому что метод загрузки расширения пакета отвечает за загрузку конфигурации службы, связанной с пакетом, которому он принадлежит, и только для этого. Контейнер, который вы получаете в качестве аргумента метода load, является просто копией контейнера приложения, он не содержит всего (только параметры) [# Использование-на-нагрузка-метода].

Использование метода load ()

В методе load () будут загружены все службы и параметры, связанные с этим расширением. Этот метод не получает фактический экземпляр контейнера, но копию. Этот контейнер имеет только параметры из фактического контейнера. После загрузки сервисов и параметров копия будет объединена в фактический контейнер, чтобы гарантировать, что все сервисы и параметры также будут добавлены в фактический контейнер.

Как вы сказали, вы можете использовать метод prepend, чтобы обеспечить разумную конфигурацию по умолчанию для других пакетов и упростить использование ваших. [Prepend_extension].

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]