2015-01-17 29 views
1

我是Symfony的新手,並且正在啓動一個包含管理部分的應用程序。一般的建議很明顯 - 建立一個AdminBundle。Symfony2 - AdminBundle實際上是組織應用程序的正確方法嗎?

但是,這真的是最佳做法嗎? Symfony的文檔是說,一個捆綁包可以作爲一個「插件」,可以按原樣分發,並且可以在另一個應用中使用。管理部分不需要知道主應用程序的所有模型和東西嗎?它是專爲我的應用程序管理更改的管理部分,因此它將如何分配或自包含?

我覺得我錯過了一些東西,因爲如果所有的建議是做一個AdminBundle,那麼我顯然不理解某些東西,或者還沒有深入研究Symfony。

我只是想讓我的應用程序從未來的正確結構開始。

僅供參考,我也使用默認的AppBundle創建了一個項目。我只是計劃把所有東西都放在那裏,但這看起來不對,因爲單獨組織所有的管理員工作會更困難。

回答

0

我認爲這取決於旅遊需求和項目規模。創建一個特殊的軟件包來放置管理面板的邏輯是一種很好的做法。但是如果你有一個只有幾個實體的小應用程序,那麼不需要創建AdminBundle。

Symfony爲您提供了任何你喜歡做你需要的方式。您可以創建捆綁包或將所有管理面板業務邏輯放入主包控制器目錄內的特殊目錄中,或將所有代碼放入相同的控制器中,並通過設置防火牆來管理對管理操作的權限。

我建議使用AdminBundle。它可以讓您的代碼更清潔:一個包中包含客戶端邏輯,另一個包含管理邏輯。

來自symfony官方文檔的Bundle描述並不是說任何相反的事情。因爲如果你想要的話,你可以在另一個應用中使用你的AdminBundle。捆綁是一種將不同類型的業務邏輯彼此分開的方法。

+0

好的,現在我有AdminBundle用於網站的管理部分,AppBundle用於訪問者使用或登錄的網站的正常部分。這對我來說沒有多大意義。管理員是應用程序的一部分。但同時,我絕對認爲將所有管理員的東西分成一個包,以便它可以擁有自己的一套控制器,等等。 – BadHorsie

+0

@BadHorsie您可以將管理員視爲一個單獨的應用程序。它可能在相同的後端數據上運行,但它是不同用戶和不同目的的獨立界面,具有不同的邏輯和需求。在某些方面,你擁有的是一個面向用戶的應用程序和一個管理應用程序,因此將它們分開對我來說不會感到太奇怪。 –

+0

關於資源,文檔正在說我把AppBundle的資源放在'app/Resources /'中。但是,我會將我的管理資源放在src/AdminBundle中。我覺得這兩個捆綁應該遵循相同的約定。我可能會把前面的網站資源放在'src/AppBundle',管理員的'src/AdminBundle'中,然後在'app/Resources/public'中共享資源(例如jQuery,Bootstrap) - 這是一個好主意?正常的做法是什麼?這不違反AdminBundle如果依賴與捆綁包一起打包的資源而自成一體的想法嗎? – BadHorsie

相關問題