Symfony Routes without app/config/routing.yaml


Symfony Routes without app/config/routing.yaml

我为Symfony 2阅读的教程指示用户在中输入路由信息

app/config/routing.yml

如果用户希望在自己的捆绑包中包含路由信息,则会指示他们将routing.yml文件添加到捆绑包中,然后用类似的东西从app/config/routing.yml指向他们的文件

my_route_stuff:
    resource: "@CustomstuffBundle/resources/config/routing.yml"

有什么方法可以跳过"将此额外配置添加到app/config/routing.yml文件"?我正在寻找将捆绑包交给其他人的能力,并让他们能够将其部署到Symfony应用程序中,而无需编辑自己的app/config/routing.yml

如果这不可能,如果有人能解释为什么(即:背后的一般原理)路由信息是AppKernel的一部分而不是单个Bundle的一部分,则可获得加分。我仍然有点不清楚routing.yml文件和普通Symfony config.yml文件之间的区别。

有没有办法跳过"将此额外配置添加到app/config/routing.yml文件?

不,这是SonataAdminBundle、FOSUserBundle和其他一些人处理它的方式

为什么

路由属于应用程序,而不是每个捆绑包。如果每个捆绑包都开始包含自己的路由文件,并且Symfony2自动加载了它们,那么您很快就会有一堆您可能不想在应用程序中启用的路由。

如果SonataAdminBundle希望您使用/admin,但您已经有了一条路线,并希望Sonata使用/sonata/admin,该怎么办?你需要一个文件来覆盖这些路线,然后你就回到了原点!

此外,尽管缓存减轻了这一部分,但查找文件的成本很高,而且会大大降低开发环境的速度。这就是为什么即使在开发模式下也会从缓存中读取翻译文件,并且在添加新的翻译资源时必须清除缓存。请参阅:http://symfony.com/doc/current/book/translation.html#message-目录

最后,将路由排除在config.yml之外只是一个组织问题。路由和配置是两个不同的东西,不属于同一个文件。

一般的想法是,每个文件都是的东西,并且应该只做东西