2015-10-28 89 views
3

我在我的简单项目中使用HMVC,但我不知道如何在控制器内部调用它们。如何使用CI3 + 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> 

而在我的富控制器我打电话给他们这样的:

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的新手。

+1

http://code.tutsplus.com/tutorials/hmvc-an-introduction-and-application--net -11850 – Bugfixer

回答

3

这是非常罕见的,我遇到了一个特别高质量的问题,如果我可以的话,我会upvote你的问题两次。我对HMVC没有任何经验,只是在黑暗中拍摄而已,但如果您尝试引用方法而不是控制器,会发生什么?

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

如果不工作,这也给了一枪:

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

谢谢,第一个作品! :-)我想知道为什么我需要把索引方法? – Jerielle

+0

在我使用的每个框架中,路由器都会从模块/控制器/操作结构与控制器/操作结构混淆,因此不确定是使用默认模块还是缺省操作。所以我可以理解,如果你的路由逻辑没有“正确”配置,你需要如何设置它。 – Ultimater

+0

感谢您的大力帮助:-) – Jerielle

相关问题