2013-09-10 3 views
1

Есть ли способ зарегистрировать маршрутизацию пакета из самого пакета и не импортировать его в основной файл маршрутизации? Теперь мой routing.yml выглядит следующим образом:Symfony 2 - «Внутренняя» маршрутизация пакетов

my_route: 
    resource: "@MyExampleAdhocBundle/Resources/config/routing.yml" 
    prefix: /

Однако, я хотел бы, чтобы каким-то образом включить маршрутизацию расслоение в классе ExampleBundle или расслоение конфигурации, так что это будет, только если пакет зарегистрирован в AppKernel.

ответ

0

№ Для каждого пучка маршрутизация должна быть импортирована в routing.yml. Каждый популярный комплект (например, FOSUserBundle) должен это делать.

Таким образом, ни один пакет не может переопределять маршрутизацию пользователей. Импорт маршрутов в routing.yml дает возможность определить префикс или хост на этих импортированных маршрутах.

0

Вы пытались сделать это в своем файле расширения пакета (AcmeDemoExtension для AcmeBudle)?

Я думаю, вы должны заглянуть внутрь Kernel::buildContainer, чтобы понять, как это делается и как вы можете справиться с этим.

0

думаю custom route loader - ответ.

Пользовательский загрузчик маршрутов позволяет добавлять маршруты в приложение без их включения, например, в файл Yaml. Это пригодится, когда у вас есть пакет, но вы не хотите вручную добавлять маршруты для пакета в app/config/routing.yml. Это может быть особенно важно, если вы хотите, чтобы пакет был повторно использован, или когда вы открыли его, поскольку это замедлит процесс установки и сделает его подверженным ошибкам. В качестве альтернативы вы также можете использовать пользовательский загрузчик маршрутов, когда вы хотите, чтобы ваши маршруты были автоматически сгенерированы или расположены на основе какого-либо соглашения или шаблона.

+0

Маршруты из пользовательских маршрутов погрузчика должны быть также [упомянуто в 'routing.yml'] (http://symfony.com/doc/current/cookbook/routing/custom_route_loader.html#using-the-custom-loader) –

+0

Вы правы, но связка отвечает за включение и отключение маршрутов, что решает проблему. :) – acid

Смежные вопросы