2

假设我有一个CoreBundle,它有一个名为 的实体Event。在 中CoreBundle,例如可以显示事件 ( showAction)。我也有一个BackendBundle。该事件deleteAction只能从后端触发。但是,deleteAction属于在 中定义的实体CoreBundle。theCoreBundle和 theBackendBundle都有一个EventController.

问题是:应该deleteAction放在BackendBundle'sEventController还是CoreBundle's中EventController

Ps 我知道两者都会起作用,但这更像是一个哲学问题。

4

1 回答 1

1

我建议你有一个BackendBundle与一个EventController和一个deleteAction。此 deleteAction 可能会调用 .NET 中的特定处理程序(或管理器或其他)CoreBundle,但我会将控制器代码保留在 BackendBundle 中。

首先,它可以很容易地遵循代码而无需切换包。我可以看到请求进来了,要么删除了实体,要么调用了某个管理器,并且发送了重定向或呈现了模板。

其次,更重要的是,如果您引入另一个具有 deleteAction 后端的捆绑包,您可以使用不同的方式来处理它们(一个在它自己的捆绑包中,一个在 内部CoreBundle)或者您必须将它们命名为不同的并且制造大混乱。

在一般情况下,我坚持将控制器放在路由和视图所在的同一个包中,并且只共享模型。在 CoreBundle 的情况下,我使用控制器和模型之间的管理器处理删除。在您的情况下,deleteAction将获得EventManager服务并使用对象或 id 调用删除(取决于我的需要)。这样,为删除事件而执行的代码就在一个地方,并且可以轻松更改。

于 2013-02-13T10:00:31.853 回答