我对 Kohana 的 HMVC 模型有疑问。我真的很喜欢在相同的原则 (MVC) 内将东西分离为组件的想法,以便扩展和更轻松地创建 api。
尽管我遇到了一些缺点,例如知识的丧失。
例如,我可以有名为news和categories的组件。最重要的是站点控制器,它们只是委托完整的请求并通过这些组件收集站点模板的所有 html/数据。
Site controller
/ \
/ \
categories news
当我想要边栏的所有类别时,我可以调用:/categories/list。当我想要一个新闻项目时,我可以调用 /news/ID。两者都返回 html。
如果我有一个主要任务是显示新闻文章的新闻阅读站点控制器,该控制器将获取侧边栏的所有类别。接下来它将获取新闻项目。
Newsreadon
/ \
/ \
categories/list (html) news/<id> (html)
当我在站点模板中显示所有元素时,我想知道 html 标题标签的新闻的“标题”,但我不知道,因为我返回了 html。
我觉得有多种解决方案:
- 在某个注册表中存储标题(但如果我将组件扩展到其他服务器并使用 HTTP,这会丢失)。所以鉴于缩放,没有好的选择。
- 返回带有 'title' 和 'html' 字段的 json。
- 读出 html 的某些部分,例如标题的 h2
解决方案 2 似乎是最不讨厌的,并且保持无状态通信的完整性。
我真的很想知道您将如何以优雅的方式解决这个问题?我错过了“解决方案”吗?
编辑:通过 kohana 了解 HMVC 的有趣阅读:http: //techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/