假设我有CoreBundle
,其中有一个名为Event
的实体。在CoreBundle
中,事件可以是例如显示(showAction
)。我也有一个BackendBundle
。事件的deleteAction
只能从后端触发。但是,deleteAction
属于CoreBundle
中定义的实体。 CoreBundle
和BackendBundle
都有EventController
。
问题是:deleteAction
是否应该放在BackendBundle
的{{1}}或EventController
的{{1}}中?
P.S。我知道两者都有效,但这更像是一个哲学问题。
答案 0 :(得分:1)
我建议你BackendBundle
EventController
和deleteAction
。这个deleteAction可能会调用CoreBundle
中的特定处理程序(或管理器或其他),但我会将控制器代码保留在BackendBundle中。
首先,它可以轻松地在不切换捆绑的情况下遵循代码。我可以看到请求进来,要么删除实体,要么调用某个管理器,并发送重定向或呈现模板。
其次,更重要的是,如果你引入另一个后端有一个deleteAction的bundle,你可以有不同的处理方式(一个在它自己的bundle里面,一个在CoreBundle
里面)或者你必须将它们命名为不同并造成大混乱。
在generell中,我遵守规则,让控制器位于路径和视图所在的同一束中,并且只共享模型。在CoreBundle的情况下,我处理控制器和模型之间的管理器删除。在您的情况下,deleteAction
将获得EventManager
服务,并使用对象或ID调用删除(根据我的需要)。这样,执行删除事件的代码就在一个地方,可以轻松更改。