CodeIgniter全局变量

Shi*_*ant 10 php codeigniter

我在所有观看中 使用$ data$this->load->view('my_view', $data);

我还按照本指南扩展核心控制器自动加载了一个控制器

但是我希望将$ data全局化,因为views有一个侧栏对整个项目来说是常量,并显示通过自动加载控制器中的db获取的信息

目前我必须为每个人手动编写$ data ['todo']并从自动加载模型中获取信息.

谢谢.

Shi*_*ant 16

1:创建MY_Controllerapplication/libraries与下列内容:

class MY_Controller extends Controller {  
  var $data;      
  //constructor function              
}
Run Code Online (Sandbox Code Playgroud)

2:替换ControllerMY_Controller所有控制器文件并加载视图$this->data

class Contact extends Controller { //to.. } 

class Contact extends MY_Controller { 
 $this->load->view('contact_view', $this->data);
}
Run Code Online (Sandbox Code Playgroud)

这样,您可以在MY_Controller类似加载设置中执行适用于整个站点的默认功能.


sto*_*ain 5

我今天早些时候遇到了类似的问题.我发现使用常量更简单,而不是全局变量.您可以定义将从index.php文件加载的常量文件:

// Include additional constants
$defines_file = 'includes/defines.php';
if (file_exists($defines_file))
{
    require_once($defines_file);
} 
Run Code Online (Sandbox Code Playgroud)

然后,您可以将常量添加到defines.php文件中:

define(MY_CONSTANT,'my constant info');
Run Code Online (Sandbox Code Playgroud)

这样,它们可以直接在整个系统的任何文件中使用:echo MY_CONSTANT;或者您可以将它们分配给变量.

我决定这种方式对我来说会更容易,因为我只需要一个位置去/当我需要更改常量时.

更多:http://codeigniter.com/forums/viewthread/56981/#280205