【问题标题】:How can I call another module controller inside my controller using CI3 + HMVC?如何使用 CI3 + HMVC 在我的控制器中调用另一个模块控制器?
【发布时间】:2015-10-28 02:38:03
【问题描述】:

我在我的简单项目中使用 HMVC,但我不知道如何在我的控制器中调用它们。

这是我的设置

- modules
  - common
    - controllers
      - header
      - footer
    - views
      - header
      - footer
  - foo
    - controllers
      - foo
    - views
      - foo

我的页眉和页脚控制器:

class Header extends MX_Controller {

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

    public function index() {

        $data['title'] = "Welcome to HMVC!";

        $this->load->view('header', $data);

    }

}

class Footer extends MX_Controller {

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

    public function index() {

        $data['links'] = array('link1', 'link2', 'link3', 'link4', 'link5', 'link6');

        $this->load->view('footer', $data);

    }

}

我的页眉和页脚视图很简单,如下所示:

<!DOCTYPE html>
<html>
    <head>
        <title><?php echo $title; ?></title>
    </head>
    <body>
        <div class="container"><!-- main wrapper -->

....

    <ul style="list-style: none">
        <?php foreach($links as $link) { ?>
            <li><?php echo $link; ?></li>
        <?php } ?>
        </ul>
        </div><!-- end of main wrapper -->
    </body>
</html>

在我的 foo 控制器中,我这样称呼它们:

    public function __construct() {
        parent::__construct();
        $this->load->model('M_Foo');
    }

    public function index()
    {
        $data['test'] = $this->M_Foo->sampleQuery();

        Modules::run('common/header', $data);
        Modules::run('common/footer', $data);

        $this->load->view('foo_message', $data);


    }

如何在我的控制器中调用它们? 我对 HMVC 真的很陌生。

【问题讨论】:

标签: php hmvc codeigniter-3


【解决方案1】:

我很少遇到质量非常高的问题,如果可以的话,我会两次支持你的问题。虽然我没有任何使用 HMVC 的经验,只是在黑暗中拍摄,但是如果你尝试引用方法而不是控制器会发生什么?

Modules::run('common/header/index', $data);
Modules::run('common/footer/index', $data);

如果这不起作用,也试一试:

$this->load->module('common');
$this->header->index();
$this->footer->index();

【讨论】:

  • 谢谢,第一个有效! :-) 我想知道为什么我需要放 index 方法?
  • 在我使用过的每一个框架中,路由器都会被模块/控制器/动作结构与控制器/动作结构混淆,因此不确定是使用默认模块还是使用默认动作。因此,如果您的路由逻辑未“正确”配置,我可以理解您需要如何放置它。
  • 感谢您的大力帮助 :-)
猜你喜欢
  • 2016-01-05
  • 2013-07-02
  • 2012-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多