2012-08-30 24 views
1

我已經使用了Symfony1.4超過2.5年。現在有了一個新項目,客戶希望在這個項目中使用Symfony2。Symfony2使用wrt到Symfony1.4組織

現在我研究Symfony2幾個星期後,我有幾件事情可以決定我的結構,理想情況下我可以在Symfony1.4中正確組織,但我無法在Symfony2中找到完美的方法(可能是因爲我沒有太多Symfony2的經驗)

  1. 我在項目中有3個應用程序。我是否爲這3個應用程序創建了捆綁包?或者,我可以在src /目錄中創建3個應用程序文件夾,併爲各個應用程序的各個模塊創建捆綁包?

  2. 如果我們爲上述Q1的每個應用程序創建包,我無法找到一種方法來組織相同包中明智的實體。例如。我有模塊前端的用戶,事件,日曆等模塊,我如何組織frontendBundle內的模塊?

  3. 所有應用程序的通用代碼都存儲在Symfony1.4的根lib /文件夾中,並且它可用於跨所有應用程序訪問。我無法理解哪裏有這個通用代碼?我有內部供應商文件夾嗎?或供應商文件夾只是爲了像Doctrine第三部分插件擴展的目的?

可以請一些專家的Symfony2澄清這些疑慮?

回答

1
  1. 您可以創建3個不同的包

  2. 有兩種方法。

    a)您爲實體,存儲庫等(業務邏輯一般)創建平面結構的所有內容。對於視圖,配置,翻譯等,您可以根據控制器結構創建單獨的名稱空間(因此也可以創建目錄)。例如。

    src/ 
        COMPANY/ 
         App1Bundle/ 
          Controller/ 
           UsersController.php 
           EventsController.php 
           ... 
          Entity/ 
           User.php 
           Even.php 
           ... 
          Repository/ 
           UserRepository.php 
           ... 
          Model/ 
           SomeServiceRelatedToUsers.php 
           SomeServiceRelatedToEvents.php 
           ... 
          Resources/ 
           views/ 
            Users/ 
             someUserView.twig.html 
            Events/ 
             someEventsView.twig.html 
    

    b)第二種方法 - 爲不同的邏輯部分創建單獨的名稱空間。例如。

    src/ 
        COMPANY/ 
         App1Bundle/ 
          Controller/ 
           Users/ 
            UserSpecificController1.php 
            UserSpecificController2.php 
           Events/ 
            EventsSpecificController1.php 
            EventsSpecificController1.php 
           ... 
          Entity/ 
           Users/ 
            User.php 
           Events/ 
            Even.php 
           ... 
          Repository/ 
           Users/ 
            UserRepository.php 
           ... 
          Model/ 
           Users/ 
            SomeServiceRelatedToUsers.php 
           Events/ 
            SomeServiceRelatedToEvents.php 
           ... 
          Resources/ 
           views/ 
            Users/ 
             someUserView.twig.html 
            Events/ 
             someEventsView.twig.html 
    

    我更喜歡第一個。

  3. 您爲此創建單獨的包,如CommonBundle或某物。有些人更喜歡在創建如供應商庫的通用代碼的地方,然後創建捆綁,這是您的庫和symfony應用程序之間的橋樑。

以下是這可能對您有用的鏈接:

+0

對於我問的前兩個問題,如果我們創建2個文件夾後端,前端怎麼辦?然後使用create bundle命令在前端文件夾下創建User bundle?而不是應用程序文件夾創建應用程序文件夾,並有2個文件夾前端,個別應用程序的後端?這會不會爲我分開應用程序明智的捆綁包? – thebestcoders

+0

我不確定我是否正確理解你的意思。你想創建兩個應用程序(1.4中的含義)。 「前端」和「後端」。所以你創建這樣的東西:在src/dir中用你的公司名稱創建dir(它只是約定),然後你創建兩個bundle:AdminBundle和AppBundle(而不是後端/前端 - 正確的意思是前端是你的用戶界面/視圖後端是業務邏輯和控制器)。然後在AppBundle中創建讓我們說UserController(或者事件或者你想要的)。 – Cyprian

+0

你需要改變你的方法。在Symfony2中,沒有像模塊或/和應用程序那樣的東西。邏輯上獨立的東西創建單獨的包。在特別的bundle裏面,你可以創建獨立的命名空間來提取一些「模塊」。如果你有更多的問題或更多的澄清只是問。最好的祝福! – Cyprian