0

我为 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.

如果这是不可能的,那么如果有人可以解释为什么(即:背后的一般哲学)路由信息是 Bundles 的一部分AppKernel而不是单个 Bundles 的一部分,则可以加分。我对routing.yml文件和普通 Symfonyconfig.yml文件之间的区别仍然有点不清楚。

4

1 回答 1

2

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

不,这就是SonataAdminBundleFOSUserBundle和其他一些处理它的方式。

为什么?

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

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

此外,虽然缓存可以缓解这部分问题,但查找文件的成本很高,并且会显着降低开发环境的速度。这就是为什么即使在开发模式下也会从缓存中读取翻译文件,并且在添加新翻译资源时必须清除缓存的原因。请参阅:http ://symfony.com/doc/current/book/translation.html#message-catalogues

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

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

于 2013-06-26T02:10:23.057 回答