1

所以我有一个用户控制器,它具有更新配置文件等的方法。在我正在开发的系统中,用户需要发布文章等。所以我对系统的设计感到困惑。创建文章的主要逻辑将位于 article_model 下。但是我应该如何调用这些方法?

  • 我可以在用户控制器中创建一个调用文章模型来创建文章的函数吗?
  • 我可以在用户控制器中调用一个方法并创建一个文章控制器,然后用户控制器调用文章控制器上的方法,该方法又调用主逻辑的模型。
  • 或者直接调用连接到文章模型的文章控制器。

我个人觉得我需要一个用户控制器进入这个系统,从逻辑上讲,用户创建文章。那么哪种设计在逻辑和最佳实践方面是完美的。

4

4 回答 4

2

您可以在控制器中加载多个模型,而不仅仅是将模型限制在与控制器相同的域中。因此,如果您需要在用户控制器中与文章交互,则只需加载文章模型。正如 deceze 所说,您不应该在一个控制器中调用其他控制器。这绝对违反了 MVC 约定。

在您的情况下,与文章的任何交互都应该在文章控制器中,但可以通过/articles/add之类的 URL 访问。

于 2013-08-20T13:20:09.233 回答
1

我实际上使用codeigniter,他们就是这样做的。如果您想从您的用户或配置文件控制器发布文章,您可以创建一个实例或加载您的模型。

class ProfileController extends BaseController {

    public function __construct()
    {
        $this->load->model('article_model');
    }
    public function index(){
        $this->article_model->post();
    }

}
于 2013-08-20T12:29:39.573 回答
0

不要从另一个控制器调用控制器您可以将链接添加到使用冷藏箱添加文章的配置文件调用的任何视图

如果你必须从另一个调用控制器,你可以看看 codeigniter hmvc HMVC: an Introduction and Application

于 2013-08-20T14:05:06.887 回答
0

尝试将此扩展HMVC用于 CI。它允许在另一个控制器中调用控制器方法。像这样的东西:

class Dashboard extends MX_Controller{
    public $autoload = array();

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

    public function index()
    {
        $params = 'some_params';
        $data['some_data'] = Modules::run('another_controller/method', $params);
    }
}

Where another_controller- 简单的 CI 控制器,扩展什么MX_Controller

于 2013-08-20T14:07:42.683 回答