我在所有观看$this->load->view('my_view', $data);
我还按照本指南Extending Core Controller
自动加载了一个控制器但我希望将$ data全局化,因为在views
中有一个侧栏对整个项目来说是常量,并显示通过自动加载控制器中的db获取的信息
目前我必须为每个人手动编写$ data ['todo']并从自动加载的模型获取信息。
谢谢。
答案 0 :(得分:16)
1:使用以下内容在MY_Controller
中创建application/libraries
:
class MY_Controller extends Controller { var $data; //constructor function }
2:将Controller
替换为所有控制器文件中的MY_Controller
,并使用$this->data
加载视图
class Contact extends Controller { //to.. } class Contact extends MY_Controller { $this->load->view('contact_view', $this->data); }
这样您就可以在MY_Controller
中执行适用于整个网站的默认功能,例如加载设置。
答案 1 :(得分:5)
我今天早些时候遇到了类似的问题。我发现使用常量更简单,而不是全局变量。您可以定义将从index.php文件加载的常量文件:
// Include additional constants
$defines_file = 'includes/defines.php';
if (file_exists($defines_file))
{
require_once($defines_file);
}
然后您可以将常量添加到defines.php
文件中:
define(MY_CONSTANT,'my constant info');
通过这种方式,它们可以直接在整个系统的任何文件中使用:echo MY_CONSTANT;
或者您可以将它们分配给变量。
我决定这种方式对我来说会更容易,因为我只需要一个位置去/当我需要更改常量时。
答案 2 :(得分:1)
我使用辅助函数来调用全局函数!
例如
function get_user($userid){
$CI =& get_instance();
$query = $CI->db->get_where('users', array('id' => $userid), 1, 0);
foreach ($query->result() as $row){
// Return a object with userdata!
return $row;
}
}
现在我可以随处访问我的用户数据..
答案 3 :(得分:-1)
我建议使用HMVC构建模块来生成此侧边栏视图,而不是将视图数据设为全局。 HMVC是一种编写部分视图的简洁方法。