首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HMVC的精妙之处

HMVC的精妙之处
EN

Software Engineering用户
提问于 2014-09-19 14:19:24
回答 1查看 834关注 0票数 1

我是HMVC的新手,虽然教程很擅长处理保持模块分离的总体细节,并且只允许控制器进行通信,但它们并不擅长解释应该去哪里的小细节。

这是我目前面临的一个例子。我使用Kohana作为我的框架,并为一个网站构建一个管理控制面板。我做的第一件事就是设置页面。所有管理页都在admin控制器中,每个页面都是一个动作。这一切都很好,我已经创建了一个基于Kohana的Auth系统的基本登录页面。

现在我来看我的第一页,账户页。它需要列出所有具有链接的帐户,以创建新帐户并编辑/删除现有帐户。直截了当地说,我有一个页面视图,然后为一个帐户创建一个新模块。但是这里是教程让我失望的地方,当我需要获取所有帐户的列表时。通过设计,新模块应该是一个帐户的单个实例,所以当我加载所有帐户时,我将得到一个实例数组,每个帐户一个。但是这个数组在哪里?我是否创建了一个工厂来控制这一点,如果是的话,工厂在HMVC结构中的位置?

假设这个问题已经解决,并且页面控制器可以使用我的一系列帐户,那么如果在加载这些帐户时,我需要对它们进行筛选呢?大多数页面列出帐户或产品或类似的东西将有一个搜索在顶部。现在搜索是页面的一部分,所以它应该属于管理控制器,对吗?那么,在加载所有这些帐户时,我如何将这些信息传递给帐户模型呢?

在HMVC之前,我只需在管理控制器中编写查询的where子句,并将其传递给帐户模型,但这在HMVC中不是一个选项,因为管理控制器不应该对帐户的结构有任何了解。那么,现在我是否只是将搜索结果作为变量传递给帐户控制器呢?帐户控制器是否直接从GET/POST加载此信息(即使搜索属于管理控制器)?在HMVC中,有什么公认的方法来处理这个问题?

我已经标记了这个PHP,因为这是我正在使用的,我希望在PHP中有任何示例。

EN

回答 1

Software Engineering用户

发布于 2017-07-08 19:20:53

如果您记住在创建对象和使用对象之间存在区别,这可能会有所帮助。前者比后者更松散。

在您的具体示例中,我希望看到一个AccountsController (注意复数),它知道有多少帐户,并创建一个视图来确定每个单一帐户视图的位置及其大小。这个控制器还将管理搜索视图和一个AccountControllers数组。当然,这个复数控制器实际上并不创建个人帐户视图。它把这个留给它的儿童控制者。

当复数控制器创建其子控制器时,它将适当的模型信息传递给子控制器。这个模型数据可能是一个帐户,也可能只是一个帐户ID。子控制器有责任正确地使用帐户,甚至可能根据所提供的信息构建/检索一个新的帐户对象。

票数 2
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/256744

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档