如何构建Symfony 2应用程序以支持多个应用程序?

时间:2014-01-14 03:00:14

标签: symfony

背景

我们计划将当前代码迁移到Symfony2项目。

在我们的案例中,每个申请被视为我们经营的国家。就这样:

  • 每个应用程序都有一个独特的顶级域名。
  • 每个应用程序都有相同的子域名。
  • 每个应用程序都有自己的数据库。每个应用程序的数据库结构都是相同的。
  • 应用程序将共享相同的业务逻辑。业务逻辑的任何差异都将被抽象为配置文件。应该有一个基本配置文件,应用程序可以使用特定于应用程序的配置覆盖它。
  • 应用程序将共享大多数模板,但也可能存在特定于应用程序的模板。

可能的方法

  1. 多次回购
    • 每个应用程序本身都是一个Symfony2项目。
    • 所有开发都将在bundle中进行,每个应用程序通过composer加载相同的bundle。
    • 这种方法会使开发变得非常繁琐。理想情况下,我想测试所有国家的任何变化而不运行作曲家等。
  2. 包含多个内核的单个仓库中的多个应用
    • 根据here的建议,每个应用程序都会在app/文件夹中拥有自己的应用程序。
    • 复制整个应用程序文件夹似乎有点hackish。不确定这是否是推荐的做法?
  3. 修改Symfony2以支持多个应用程序
    • 修改Symfony2内核/控制台/无论支持多个应用程序。
    • 是否有任何现有的捆绑/示例已经执行此操作?
  4. [您的想法]
    • 还有其他可能的方法吗?
  5. 问题

    在Symfony2中添加对多个应用程序的支持的最佳方法是什么?

1 个答案:

答案 0 :(得分:2)

  1. 这是一个很好的方法,但如果你发现你分享了很多代码......

  2. Symfony2的创建者不推荐这种做法。如果您需要多个内核,则很可能需要多个项目。 https://groups.google.com/d/msg/symfony-devs/yneojUuFiqw/sZ8BZrzFLbwJ

  3. IDK

  4. 对于我构建的项目,更改来自$ _GET参数。我所做的是,我有一个主项目包,它处理常见功能并引用基本布局的app / view。在“核心”功能中,我创建了一个控制器并将其用作服务,以便我所有特定于应用程序的软件包都可以在任何时候使用它。然后,我为每个特定于应用程序的配置定义创建一个Symfony2扩展,以便每个应用程序都可以使用yml配置,同时在app / config / config.yml中保持高级配置。这样做的一个优点是,在CoreBundle的控制器中,我可以创建通用页面路由并呈现如下:

    $this->render('Name'.$project.'Bundle:index.html.twig', array('params' => $params));