2012-04-25 171 views
0

我有一個codeigniter應用程序與5個控制器一個是'基',其餘的是繼承形式它,我使用全局變量在基地加載視圖,但它不工作我得到未定義的變量),當我加載視圖如何解決這個問題?codeigniter,使用全局變量

我使用在基礎這一功能使用define()而不是全局設置您的變量來加載意見


function _setContent($tplFile) { 
      ob_start(); 
      $this->load->view($this->theme_dir . '/' . $tplFile, $this->tplData); 
      $_content = ob_get_contents(); 
      ob_end_clean(); 

      $this->tplData['_content'] = $_content; 
      $this->load->view($this->theme_dir . '/default', $this->tplData); 
     } 

$this->tplData // is the global variable 
+2

不回答你的問題,但你可以設置TRUE;作爲第三個參數'視圖()'函數返回的內容,而比回聲它(所以你不需要使用ob_ *功能) – Ben 2012-04-25 11:22:25

+1

Mamoum,你得到什麼確切的消息?奇怪的是,你得到$ this-> tplData的Undefined錯誤,你確定錯誤不是來自視圖,你調用的數組索引你沒有通過? – 2012-04-25 11:28:18

+0

這個錯誤是當我調用數組索引時出現的錯誤:Undefined variable ... – 2012-04-25 22:55:07

回答

0
+0

從邏輯上講,define是用於常量,在OP的邏輯中不是常量。雖然gloablly,globals和constats都有不同的用途,但它們不可互換 – 2012-04-25 11:15:19

+0

那麼,「tplData」的類型是什麼? – 2012-04-25 11:21:32

+1

老實說,我並不清楚,但是因爲它與視圖有關,所以我認爲它會改變每種方法,以便一個視圖加載某些內容,另一個加載其他一些數據等等。如果您將其定義爲常量,則每次要傳遞視圖不同數據時都需要重新定義它。 – 2012-04-25 11:23:27

1

您可以使用配置類。

$this->config->set_item('global_variable', $my_var); 

現在你可以使用這個變量,無論你想

$this->config->item('global_variable');