我正在尝试建立最合乎逻辑的方式来使用Symfony中的控制器。推荐的约定是什么?
在其他框架中,我之前已经创建了一个与每个模型相关的控制器,例如,如果有用户模型,则用户控制器将处理与用户相关的操作,例如登录,注销等。我不知道这是否是组织应用程序的最佳方式,以及它是否以同样的方式适用于Symfony。
-
何时应创建新控制器?出于什么目的?
- 是否有控制器处理与每个实体相关的请求?
- 根据路由名称 (URL) 为网站的每个"部分"设置控制器?
- 只需对捆绑包使用 DefaultController 并将所有操作放入其中,然后对整个捆绑包使用路由前缀。
-
捆绑包是否需要具有默认控制器?
-
何时使用默认控制器而不是我自己的控制器(反之亦然)?
举个例子。我有AppBundle
和AdminBundle
.两者都有自己的登录系统(您可以登录到"面向前面"的站点,或以管理员身份登录到管理部分)。
假设我有以下示例路由:
普通用户(应用捆绑包)
/ (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
中。