0

背景:

我在理解如何在 MVC 架构中最好地使用控制器时遇到了一些麻烦。

我有一个遵循此 URL 方案的 webapp:

  • /- 主要指标
  • /static-page- 静态页面
  • /categories- 特定类别的索引
  • /categories/users- 特定类别用户的索引
  • /categories/users/id#/user-name- 特定类别的特定用户
  • /categories/event-type-A与特定类别相关的事件索引
  • /categories/event-type-A/id#/event-name- 特定类别的特定事件
  • /categories/event-type-B与特定类别相关的事件索引
  • /categories/event-type-B/id#/event-name- 特定类别的特定事件

*注意:此 URL 结构类似于 StackOverflow 的,event-name如果存在格式错误的 URL(错误的 s)会自动更正id#

问题:

由于categoriesusersevent-types 每个都有与之相关的独特功能(即编辑用户、操作事件等),它们都是自己的控制器(对吗?)。由于event-type-Aevent-type-B非常相似,它们共享从一个events类扩展的通用功能。

您如何建议我组织我的控制器,使其遵循 OOP 和 MVC 设计中的“标准实践”?

我目前有一个Pages用于我的静态页面的类,并且我期望有一个categories类调用一个users类,event-type-A并且event-type-B类(如上所述)是一个events类的扩展......但是从这里我不确定如何最好继续。

任何简单/伪代码示例将不胜感激。

附加信息:

仅供参考:我正在使用 PHP/MySQL。我一直在尝试通过编写自己的框架来学习 MVC,但最近切换到了 CodeIgniter。话虽如此,CodeIgniter 特定的解决方案或通用的 MVC 解决方案就足够了。

更新:

正如下面Ako 提到的,我绝对可以将它们events组合成一个控制器,然后从中type生成两个。我只是对如何实际设置每个控制器(定义哪些方法等)以使它们正常工作感到困惑。

4

2 回答 2

1

看起来这个答案提供了一个令人满意的解决方案。

在本质上:

需要时使用HMVC加载必要的 MVC 三元组。

我以前从未听说HMVC过,但显然它允许我指定何时调用某些 MVC 三元组,这最终将使我能够控制何时调用不同的控制器。这将允许每个部分(categorieseventstypes等)充当独立的模块,这些模块具有index可以调用的自己的页面,但也可以提供根据需要提供更精细数据的能力。

于 2012-05-09T04:11:57.703 回答
0

改变/categories/event-type-Aand /categories/event-type-Bto/categories/events/type怎么样?哪里type可能是其中一个AB(或类似的东西)?

于 2012-05-01T19:16:43.823 回答