2

我对 Kohana 的 HMVC 模型有疑问。我真的很喜欢在相同的原则 (MVC) 内将东西分离为组件的想法,以便扩展和更轻松地创建 api。

尽管我遇到了一些缺点,例如知识的丧失。

例如,我可以有名为newscategories的组件。最重要的是站点控制器,它们只是委托完整的请求并通过这些组件收集站点模板的所有 html/数据。

          Site controller
           /             \
          /               \
   categories              news

当我想要边栏的所有类别时,我可以调用:/categories/list。当我想要一个新闻项目时,我可以调用 /news/ID。两者都返回 html。

如果我有一个主要任务是显示新闻文章的新闻阅读站点控制器,该控制器将获取侧边栏的所有类别。接下来它将获取新闻项目。

                Newsreadon
               /          \
              /            \
 categories/list (html)    news/<id>   (html)

当我在站点模板中显示所有元素时,我想知道 html 标题标签的新闻的“标题”,但我不知道,因为我返回了 html。

我觉得有多种解决方案:

  1. 在某个注册表中存储标题(但如果我将组件扩展到其他服务器并使用 HTTP,这会丢失)。所以鉴于缩放,没有好的选择。
  2. 返回带有 'title' 和 'html' 字段的 json。
  3. 读出 html 的某些部分,例如标题的 h2

解决方案 2 似乎是最不讨厌的,并且保持无状态通信的完整性。

我真的很想知道将如何以优雅的方式解决这个问题?我错过了“解决方案”吗?

编辑:通过 kohana 了解 HMVC 的有趣阅读:http: //techportal.inviqa.com/2010/02/22/scaling-web-applications-with-hmvc/

4

2 回答 2

0

如果我有一个新闻阅读网站控制器,其主要任务是显示一篇新闻文章......

如果这个控制器的目的是显示一篇新闻文章,那么我不明白需要额外的控制器。考虑改变你的应用程序设计,也许 Newsreadon 扩展了控制器来显示新闻文章。

于 2012-02-20T16:01:46.967 回答
-1

由于您使用 显示新闻news/<id>,因此可能父控制器知道新闻的 ID。从那里,只需从您的模型中获取新闻标题。那将是正确的方法。尝试从子请求中提取一些数据将使您的应用程序更紧密地耦合,并且从长远来看更难以维护。

于 2012-02-20T14:56:38.733 回答