笨全局变量
我使用$数据在我所有的观点$this->load->view('my_view', $data);
笨全局变量
我也有自动加载一个控制器本指南Extending Core Controller
以下但我想使$全球数据,因为在views
存在侧边栏这是不变的整个项目,并显示通过数据库获取自动装载控制器的信息
目前,我必须手动写每个$ data ['todo']并从自动加载模型。
谢谢。
1:下面创建application/libraries
MY_Controller
:
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
中的整个站点,如加载设置。
今天早些时候我遇到了类似的问题。我发现一个简单的方法,而不是全局的方法是使用常量。您可以定义一个常量文件,该文件会从你的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;
或者您可以将它们分配给变量。
我决定这种方式对我来说会更容易,因为我只有1个位置可以去/何时需要改变常量。
它的好主意,我已经使用了所有常量值,但这不适合我,因为我从db获取的数据每次都是不同的。使用另一个包含脚本不会让我使用内置的CI数据库库,所以我不得不这样做 – Shishant 2010-03-27 19:11:42
而不是使视图数据全球性的,我会建议使用HMVC构建模块来产生这种侧边栏视图。 HMVC是对部分视图进行编码的一种很好的干净方式。
当你谈论像部分视图那样简单的事情时,HVMC是矫枉过正的。如果你有一个不太多的局部视图,只需要将视图加载到常量本身中:'define('MY_VIEW',$ this-> load-> view('my_view','',TRUE));'' - 然后只需在大视图中回显MY_VIEW常量。 HVMC为这样简单的事情增加了很多行李。 – 2010-03-28 01:18:11
代码中的哪个位置可以加载渲染局部视图所需的数据? – 2010-03-28 08:41:45
我使用了一个辅助函数来调用一个全局函数!
例如。
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;
}
}
现在我有机会到我的用户数据无处不在..
这不是为我工作! – JoeM05 2011-02-02 23:38:13
如果它不起作用,然后尝试把MY_Controller.php信息应用程序/核心 如果你改变前缀为某事,然后一定要改变它在配置。php @ $ config ['subclass_prefix'] – 2011-09-30 16:33:48