Загрузчик пользовательских маршрутов Symfony: ошибка импорта

Я пытаюсь динамически загружать файлы маршрутизации yml из разных пакетов в соответствии со значениями в моей БД. Я следовал cookbook, чтобы создать собственный загрузчик маршрута, но я при импорте файла возникает ошибка. Я работаю над Symfony 2.3. Моя маршрутизация работает правильно, когда я добавляю коллекцию вручную в файл routing.yml.

Я создал сервис для загрузки ресурсов:

class ExtraLoader implements LoaderInterface
{
    private $loaded = false;

    public function load($resource, $type = null)
    {
        if (true === $this->loaded) {
            throw new \RuntimeException('Do not add the "extra" loader twice');
        }

        $loader = new AdvancedLoader($this->getResolver());
        $routes = new RouteCollection();

        $route = $loader->import('@ERPExsecBBundle/Resources/config/routing.yml');
        $route->addPrefix('/Production/');
        $routes->addCollection($route);

        $this->loaded = true;

        return $routes;
    }

    [...]
}

И продвинутый загрузчик, как описано в кулинарной книге:

class AdvancedLoader extends Loader
{
    public function __construct($resolver) {
        $this->resolver = $resolver;
    }

    public function load($resource, $type = null)
    {
        $collection = new RouteCollection();
        $type = 'yaml';
        $importedRoutes = $this->import($resource, $type);
        $collection->addCollection($importedRoutes);
        return $importedRoutes;
    }

    public function supports($resource, $type = null)
    {
        return $type === 'advanced_extra';
    }
}

Но я получаю сообщение об ошибке:

Неустранимая ошибка: неперехваченное исключение «Symfony \ Component \ Config \ Exception \ FileLoaderLoadException» с сообщением «Невозможно загрузить ресурс» @ ERPExsecBBundle / Resources / config / routing.yml. Убедитесь, что пакет «ERPExsecBBundle / Resources / config / routing.yml» правильно зарегистрирован и загружен в класс ядра приложения ». в C: \ Program Files \ wamp \ www \ alimerp \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ Config \ Loader \ Loader.php в строке 77

Почему я получаю эту ошибку?


person user2816157    schedule 04.10.2013    source источник


Ответы (2)


В кулинарной книге написано:

# app/config/routing.yml
AcmeDemoBundle_Extra:
    resource: .
    type: extra

где «тип» должен соответствовать типу вашего AdvancedLoader

 public function supports($resource, $type = null)
 {
     return $type === 'advanced_extra';
 }

Вам следует попробовать заменить "extra" на "advanced_extra" в вашем app / config / routing.yml

person PublicVar    schedule 06.06.2014

Вы зарегистрировали пакет ERPExsecBBundle в своем AppKernel.php?

person zapcost    schedule 04.10.2013
comment
Да, на самом деле моя маршрутизация работает правильно, когда я вручную добавляю маршруты в файл routing.yml, но как только он регистрируется через мою службу, я получаю сообщение об ошибке. Думаю, может что-то не так в реализации AdvancedLoader. - person user2816157; 04.10.2013