2014-01-14 75 views
3

背景如何構建Symfony 2應用程序以支持多個應用程序?

我們計劃將我們當前的代碼遷移到Symfony2項目。

在我們的案例中,每個應用程序被認爲是我們運營的國家。因此:

  • 每個應用程序都有一個唯一的頂級域名。
  • 每個應用程序將具有相同的子域。
  • 每個應用程序都有自己的數據庫。每個應用程序的數據庫結構都是相同的。
  • 應用程序將共享相同的業務邏輯。業務邏輯中的任何差異將被抽象爲配置文件。應該有一個基本配置文件,應用程序可以用應用程序特定的配置來覆蓋。
  • 應用程序將共享大部分模板,但也可能存在特定於應用程序的模板。

可以通過自身途徑

  1. 多回購
    • 每個應用程序都將是一個Symfony2的項目。
    • 所有的開發都將以捆綁方式進行,每個應用程序通過作曲者加載相同的捆綁包。
    • 這種方法會使開發非常繁瑣。理想情況下,我想測試在所有國家的任何變化,但不運行作曲家等
  2. 使用多個內核
    • 每個應用程序的單一回購中的多個應用程序必須在app/文件夾它自己的應用程序的建議在here
    • 複製整個應用程序文件夾似乎有點hackish。不確定這是否是推薦的做法?
  3. 修改的Symfony2支持多種應用
    • 修改Symfony2的核心/控制檯/無論支持多種應用。
    • 是否有任何現有的軟件包/示例已經這樣做?
  4. [你的想法在這裏]
    • 是否還有其他可能的方法?

問題

什麼是添加在Symfony2的多個應用程序支持的最佳方法呢?

回答

2
  1. 這是一個很好的做法,但如果你發現你共享了大量的代碼......

  2. 的Symfony2的創造者不推薦這種做法。如果你需要多個內核,你很可能需要多個項目。 https://groups.google.com/d/msg/symfony-devs/yneojUuFiqw/sZ8BZrzFLbwJ

  3. IDK

  4. 對於一個項目,我已經建立的變化來自於$ _GET參數。我所做的是,我有一個主要項目包,處理常用功能並引用應用程序/視圖以獲得基本佈局。在「核心」功能中,我創建了一個控制器並將其用作服務,以便我的所有特定於應用程序的軟件包都可以在任何時候使用它。然後,我爲每個特定於應用程序的配置定義創建一個Symfony2擴展,以便每個應用程序都可以具有yml配置,同時在app/config/config.yml中保留高級配置。這樣做的好處是,在CoreBundle的控制器,可以創建通用的頁面的路線和渲染,如:

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

+0

感謝您的想法。我們決定採用你的方法。我們的配置目前駐留在我們的捆綁包中。該擴展然後根據國家(即應用)決定要加載哪個配置。我們必須修改AppKernel和Console以瞭解多個應用程序。 – Nicodemuz

+0

很高興解決! –

相關問題