2015-10-28 107 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

相關問題