【问题标题】:Symfony: Overriding/Adding routes from inherited bundleSymfony:从继承的包中覆盖/添加路由
【发布时间】:2015-08-28 00:00:13
【问题描述】:

假设我有几个网站共享大约 80% 的功能,包括路由策略、模板等。 我想对所有这些都使用相同的代码库,并有一个“DefaultSiteBundle”和几个“SiteABundle”、“SiteBBundle”使用捆绑继承覆盖或向 DefaultSiteBundle 添加功能。

这意味着,应该始终加载 DefaultSiteBundle,并且根据域名,有条件地加载 SiteABundle 或 SiteBBundle。

我的问题是,如何在不将所有 SiteBundles 添加到 app/config/routing.yml 的情况下管理路由?

【问题讨论】:

  • 如果只是路由,你可以在你的路由中使用hostname_pattern选项,但是如果你想拥有完全不同的应用程序,那么你可以使用multiple kernels
  • 由于您的问题是关于如何处理路由,我假设您已经知道如何根据主机名有条件地加载包。你是怎样做的?我问是因为您的主要问题的答案可能取决于此。
  • 我使用 AppKernel 中的 registerBundles 方法有条件地加载包,基于“domain.name”环境变量。但是,仍然假设所有路由都是从 app/config/ 中配置的内容加载的routes.yml ,这是,我必须在那里明确添加所有“站点”捆绑包,即使我不打算全部加载它们。未注册捆绑包的路由会发生什么?嗯..我没有测试

标签: symfony inheritance routing routes bundle


【解决方案1】:

最后,我解决它的方法是使用自定义路由器,基于 symfony 文档中解释的Advanced loader。路由器加载并合并来自两个捆绑包的路由。 为每个站点创建单独的缓存也很重要(在 AppKernel 中覆盖“getCacheDir”,以便为每个域返回不同的路径)

【讨论】:

    猜你喜欢
    • 2017-04-01
    • 1970-01-01
    • 2020-01-10
    • 2019-06-29
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 1970-01-01
    相关资源
    最近更新 更多