Symfony2 组织控制器(控制器名称)的最佳方式


Symfony2 best way to organise controllers (controller names)

我正在尝试建立最合乎逻辑的方式来使用Symfony中的控制器。推荐的约定是什么?

在其他框架中,我之前已经创建了一个与每个模型相关的控制器,例如,如果有用户模型,则用户控制器将处理与用户相关的操作,例如登录,注销等。我不知道这是否是组织应用程序的最佳方式,以及它是否以同样的方式适用于Symfony。

  1. 何时应创建新控制器?出于什么目的?

    • 是否有控制器处理与每个实体相关的请求?
    • 根据路由名称 (URL) 为网站的每个"部分"设置控制器?
    • 只需对捆绑包使用 DefaultController 并将所有操作放入其中,然后对整个捆绑包使用路由前缀。
  2. 捆绑包是否需要具有默认控制器?

  3. 何时使用默认控制器而不是我自己的控制器(反之亦然)?


举个例子。我有AppBundleAdminBundle.两者都有自己的登录系统(您可以登录到"面向前面"的站点,或以管理员身份登录到管理部分)。

假设我有以下示例路由:

普通用户(应用捆绑包)

/                 (home page)
/login            (normal user login)
/directions       (feature 1)
/menu             (feature 2)
/menu/comments    (a sub-section of feature 2)
管理员

(管理员捆绑包)

/admin                  (administrator home page)
/admin/login            (admin login)
/admin/users            (view registered users)
/admin/users/345/edit   (edit user with ID 345)

在这里组织控制器的最佳方式是什么?我需要多少个控制器,我将遵循什么约定?

你不需要 DefaultController。我认为创建一个控制器来管理实体是个好主意。另一种做法是"一个功能-一个控制器"。

从最佳实践:

业务逻辑放在捆绑包中没有技术原因。

因此,如果您有一个实体用于两个捆绑包(例如用户),您可以将其直接放入 src/Entity/User.php 中。