3

我正在使用 CodeIgniter 和 wiredesignz 的 HMVC 扩展。

我的网络应用主要处理文本文章。我有一个名为articles. 文章模块的模型articles_model,包含对文章进行数据库更改的函数。例如,以下内容将更新文章:

$this->articles_model->update_article();

用户仪表板还有另一个模块。用户有时会从他们的仪表板中更新文章。该请求是从仪表板控制器发出的,因为此操作是从仪表板模块中的视图执行的。

在这种情况下,我应该如何让仪表板控制器与文章模型进行通信?到目前为止,我遇到的几个选项是:

  1. update_article()在文章控制器中创建一个函数。它所做的只是调用articles_model同名的函数。让仪表板控制器调用文章控制器功能update_article()。之所以会这样做,是因为我已经读过在模块化设计中,控制器应该是不同模块(源代码)之间的通信点。我还遇到过其他观点,即控制器永远不应该互相交谈。因此我的困惑。

  2. 我也可以update_article()dashboard_model. 这样,仪表板控制器只需在自己的模块中调用自己的模型。我的直觉告诉我这不是要走的路,因为该update_article()函数不仅被仪表板控制器调用,而且还被很多其他函数调用。这将导致大量重复代码。

任何建议表示赞赏。

4

1 回答 1

0

您可以从另一个模块articles的模块加载模型。articlesDashboard

Dashboard只需将模型加载到您希望模型可用的模块(例如)的构造函数中,它应该看起来像这样。

function __construct() {
  parent::__construct();

  ...

  // this is case sensitive, 1st part is the module, 2nd part is the class name
  $this->load->model('articles/Articles');
}

然后在您的控制器中的任何地方(例如Dashboard),您都可以调用$this->articles_model->update_article();.

于 2012-09-09T03:11:08.067 回答