我对于每个逻辑功能组一般都有一个控制器。通常这将与每个型号的一个控制器相对应,有时不会。
想象一下,您正在创建一个简单的在线目录,显示一个类别列表,然后当用户选择一个类别时,显示该类别的产品列表,以及用于CRUD
操作类别和产品的管理面板。我有两个型号(CategoryModel
和ProductModel
)。我会有一个控制器为前端生成类别列表,另一个控制器生成产品列表(例如CategoryController
和ProductController
)。然后,我会在后端有一个控制器,用于类别和产品(AdminCategoryController
和AdminProductController
)。两个后端控制器将处理各自型号的列表/添加/编辑/删除/查看操作。如果您认为您的网址结构并将相关功能放在相关的网址上,那么您的控制器结构通常会与您的网址结构相匹配。实际上,一些框架(例如CodeIgniter)根据控制器的名称路由请求作为默认行为。至于在控制器中发生了什么,我工作的观点是模型用于数据访问,并包装和隐藏数据库结构。诸如“当状态设置为”完成“时将当前时间分配给completion_date的逻辑”是非常适合的模型。
视图包含整个演示文稿。控制器/模型不应该生成或处理HTML。诸如2列或3的决定属于观点。视图中的逻辑应限制为生成可见输出所需的逻辑。如果您发现自己想从视图中查询数据库,那么您可能会将太多逻辑放入视图中。
控制器是为了剩下的。通常这意味着验证输入,将表单数据分配给模型,选择正确的视图并实例化处理请求所需的模型。
谢谢....这几乎是我在做什么。 我想要做的一件事是把更多的逻辑放入模型层。我使用推动模型对象,并认为验证应该进入模型层。控制器只是在模型中设置数据... – AndreLiem 2009-02-24 19:09:36