繁体   English   中英

CodeIgniter全局变量

[英]CodeIgniter global variable

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

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

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

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

谢谢。

1:在application/libraries创建MY_Controller ,如下所示:

 class MY_Controller extends Controller { var $data; //constructor function } 

2:在所有控制器文件MY_Controller Controller替换为MY_Controller ,并使用$this->data加载视图

 class Contact extends Controller { //to.. } class Contact extends MY_Controller { $this->load->view('contact_view', $this->data); } 

这样您就可以在MY_Controller执行适用于整个站点的默认函数,例如加载设置。

我今天早些时候遇到了类似的问题。 我发现使用常量更简单,而不是全局变量。 您可以定义将从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; 或者你可以将它们分配给变量。

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

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

我使用辅助函数来调用全局函数!

例如。

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;
    }
}

现在我无处不在访问我的用户数据..

我建议使用HMVC构建模块以生成此侧边栏视图,而不是使视图数据全局化。 HMVC是一种很好的编写部分视图的简洁方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM