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

Symfony2 best way to organise controllers (controller names)

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

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

  1. 我什么时候应该创建一个新控制器?用于什么目的?

    • 是否有控制器处理与每个实体相关的请求?
    • 基于路由名称 (URL) 为网站的每个 'section' 设置一个控制器?
    • 只需为一个包使用 DefaultController 并将所有操作放在那里,并为整个包使用路由前缀。
  2. bundle 需要有 DefaultController 吗?

  3. 我什么时候会在我自己的控制器上使用 DefaultController(反之亦然)?


一个例子。我有 AppBundleAdminBundle。两者都有自己的登录系统(您可以登录到 'front-facing' 站点,或以管理员身份登录到管理部分)。

假设我有以下示例路线:

普通用户(AppBundle)

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

管理员 (AdminBundle)

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

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

您不需要 DefaultController。 我认为创建一个控制器来管理实体是个好主意。其他做法是"one feature - one controller".

来自最佳实践:

there's no technical reason for putting business logic inside of a bundle.

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