2013-02-13 65 views
2

假設我有一個CoreBundle,它有一個名爲Event的實體。在CoreBundle中,事件可以例如顯示(showAction)。我也有一個BackendBundle。該事件的deleteAction只能從後端觸發。但是,deleteAction屬於CoreBundle中定義的實體。 CoreBundleBackendBundle都有一個EventController什麼是放置此動作的正確位置/包

的問題是:如果該deleteAction放在BackendBundleEventControllerCoreBundleEventController

P.s.我知道兩者都可以工作,但這更像是一個哲學問題。

回答

1

我建議你有一個BackendBundleEventControllerdeleteAction。這個deleteAction可能會調用CoreBundle中的特定處理程序(或經理或其他),但我會將控制器代碼保留在BackendBundle中。

首先,它可以輕鬆跟蹤代碼而無需切換包。我可以看到請求進入,即刪除實體或調用某個管理器,併發送重定向或呈現模板。其次,更重要的是,如果你引入了另一個具有後端deleteAction的bundle,你可以有不同的方式來處理它們(一個在它自己的bundle中,一個在CoreBundle之內),或者你有將它們命名爲不同並造成一團糟。

在generell中,我堅持規則讓控制器在路線和視圖所在的同一束中,並且只共享模型。在CoreBundle的情況下,我使用控制器和模型之間的管理器來處理刪除操作。在你的情況下,deleteAction將得到一個EventManager服務,並調用刪除對象或ID(取決於我的需要)。這樣,執行刪除事件的代碼就在一個地方,並且可以輕鬆更改。

+0

在此期間,我與一些人交談過,每個人都同意。控制器伴隨着視圖,如果只能從後端內的視圖執行特定操作,我們應該將deleteAction「關閉」移動到該視圖 – 2013-02-13 10:33:42

+0

Sgoettshkes你從我口中竊取了字。很好的答案。 +1 – DonCallisto 2013-02-13 11:33:09

相關問題