2013-02-13 69 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

相关问题