2012-04-25 202 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');