2016-10-19 104 views
1

我正在CI + HMVC安裝上工作。當我使用HMVC功能呼叫時:CodeIgniter HMVC

Modules::run("header"); 

它沒有打印任何內容。但是,如果我運行:

echo Modules::run("header"); 

或:

$x = Modules::run("header"); 

然後,它的工作原理。

這是我努力使工作代碼:

// HOME MODULE 
class Home extends MX_Controller{ 
    public function index(){ 
     Modules::run("header"); 
     $this->load->view('home_view'); 


     Modules::run("header"); 
     } 
    } 
// HEADER MODULE 
class Header extends MX_Controller{ 
    public function index(){ 
     $this->load->view('header_view'); 
    } 
} 

// FOOTER MODULE 
class Footer extends MX_Controller{ 
    public function index(){ 
     $this->load->view('footer_view'); 
    } 
} 

但是當我運行它,我只看到了「home_view」的內容。沒有頁眉和頁腳。

我不能使用上面的方法來解決它,因爲$ this-> load-> view()被緩存,這使得我的「home_view」內容出現在我的HTML底部,在我的頁腳下面,的東西。

請幫我看看爲什麼Modules:run()不會緩衝。謝謝

+0

使用像'echo Modules :: run(「header」);'這是規則渲染視圖部分如文件中所述。那麼爲什麼你不想使用它? –

回答

2

是的,它的確如你所描述的那樣,這很有趣,而且我從未觀察過,因爲我不會實現你在真實世界腳本中所做的事情。

你可以做什麼(這工作,因爲我已經嘗試過了)是創建像這樣一個template_view ......這是非常砍倒......

template_view.php

<?= isset($header) ? $header : ''; ?> 

<?= isset($content) ? $content : ''; ?> 

<?= isset($footer) ? $footer : ''; ?> 

然後,您將構建您的頁面部分並創建最終輸出。

Home.php控制器

class Home extends MX_Controller { 

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

    public function index() { 
     // Build the Page Sections 
     $data['header'] = Modules::run("header"); 
     $data['footer'] = Modules::run("footer"); 
     $data['content'] = $this->load->view('home_view', '', true); 
     // Display the final Page 
     $this->load->view('template_view',$data); 
    } 
} 

所以,你可以創建你的模板已經包括您的頁眉和頁腳,因爲它們是在你的榜樣靜態內容。然後只需創建您動態填寫的區域。

這會引導您使用模板模塊爲您處理所有這些問題。這不是你的問題,但希望它給你一些思考的食物。