2014-09-11 113 views
0

我的老闆告訴我做乾燥導航不使用重複代碼,導航我想擴展CI_Controler和構造加載頭導航,正文,頁腳文件。CodeIgniter乾燥導航

我的問題是當我創建新的控制器,當我嘗試加載不同的視圖文件,如何實現?

我伸出CONTROLER

class MY_Controller extends CI_Controller 
{ 
    public function __construct() { 

     parent::__construct(); 
     $this->load->view('view_header'); 
     $this->load->view('includes/nav_home'); 
     $this->load->view('view_home'); 
     $this->load->view('view_footer'); 

    } 
} 

後來當我創造新的CONTROLER如何加載不同勢視圖文件

class Pages extends MY_Controller 
{ 
    public function __construct() { 


     $this->load->view('includes/nav_new_view'); 
     $ 

    } 
} 
+0

什麼是 「幹導航」? – twistedpixel 2014-09-11 14:23:22

+0

你真的想實現什麼? – CodeSlayer 2014-09-12 05:24:40

回答

0

如果我理解你的問題,你想達到一個模板情況。爲此,最好的方法是在主頁面視圖中實際調用模板視圖文件。我的意思是你的控制器功能(不是構造函數,代表一個頁面的實際類的函數)應該調用主視點如

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

和文件中,你叫

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

那麼你的內容,然後

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

你會然後重複上述過程2頁面,在你的控制器的第2頁功能,您將調用

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

和您的page2視圖文件幾乎與page1完全相同,除非您在該區域使用您的第2頁內容。

你甚至可以使用單個模板視圖文件,並將它傳遞一個$content變量(這顯然每頁改變),並調用

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

您可以創建自己的模板庫。例如:

function template($view_name,$view_data){ 
    //below will return html string from view name 
    $data['content'] = $this->load->view($view_name,$view_data,true) 

    //load main template view and pass the html string to main template 
    $this->load->view('main_template',$data); 
} 

在主模板,只是回聲$內容