2013-09-23 30 views
1

我具有延伸是CI_Controller控制器類:自動傳遞數據變量,以查看在代碼點火器

class Admin_Controller extends CI_Controller {  
    var $data; 

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

     $this->load->model ('loginm'); 

     if(!$this->loginm->is_login_admin()) 
      redirect (base_url ('admin_login')); 

     $this->data['page_title'] = 'Default page title'; 
     $this->data['page_url'] = $this->uri->segment (2); 
    } 
} 

在其他類擴展該一個我不得不數據變量傳遞$這 - >到每個觀點,即我打電話給方法。有沒有一些黑客或配置,讓我自動傳遞this->數據變量,當我調用$ this-> load-> view('viewname',$ this-> data)而不是每次都傳遞它?每次我調用this-> load-> view都不是一個大問題,但如果我可以跳過它,那會更好。

+0

不公平,這是CI糟糕的地方。與laravel,這些基本的東西變得如此簡單...... – itachi

+0

@itachi,現在,讓我們不要開始framewar。 –

+0

@MaximKumpan我同意,但在這種情況下,可以建議,由於CI未來前景不明朗,現在是時候轉向新的框架。 – itachi

回答

1

你可以在你的Admin_Controller寫一個函數來包裝$this->load->view()方法

public function loadView($viewname) { 
    $this->load->view($viewname, $this->data); 
} 

然後只需調用$this->loadView('viewname');

0

您可以重載CI_Loadercore class併爲您的視圖函數添加包裝並將公共數據生成移動到輔助函數。

就個人而言,我總是創建MY_Loader::site_view($view, $data)MY_Loader::admin_view($view, $data)函數來顯示頁眉和頁腳,分別爲網站和管理頁面。可選地,這些也顯示由助手生成的公共數據。

相關問題