用户
 找回密码
 入住 CI 中国社区
搜索
查看: 7310|回复: 6
收起左侧

[HELP] 如何调用公共文件,例如头部文件?

[复制链接]
发表于 2011-9-27 15:31:39 | 显示全部楼层 |阅读模式
我有一个头部文件和尾部文件,如何在各个页面调用?
目前有一种解决方案是
我把头部所要查询数据库的数据写在model里,然后在每个页面的控制器里加载这个model,再在各个视图页里用 $this->load->view('header')引用这个头部视图,并显示相关数据。尾部文件类似,但前提是,我必须在每个页面加载这个model或者配置它自动在各个页面加载
现在的问题是,如果我把header头部文件单独作为一个文件访问 如 http://localhost/index.php/header/index ,是可以正常运行的,
我如何通过在各个视图文件里通过 直接引用的方法加载头部?当然直接include等引用进来是不行滴。
不知道有没有别的办法可以做到哦。。
发表于 2011-9-27 16:07:13 | 显示全部楼层
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');
 楼主| 发表于 2011-9-27 16:31:30 | 显示全部楼层
jeongee 发表于 2011-9-27 16:07
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');

header里的逻辑部份呢,我要怎么引用 ?
请给一个具体的,谢谢
发表于 2011-9-27 16:32:40 | 显示全部楼层
发表于 2011-9-27 20:06:08 | 显示全部楼层
不太懂哦,学习学习!
发表于 2011-9-27 22:12:26 | 显示全部楼层
本帖最后由 yuzhigang5460 于 2011-9-27 22:20 编辑

如果只是想解决避免每个控制器都要加载model的问题,可以在config里的autoload里配置一下这个model,
如果不仅仅是加载model,还有一些其他的逻辑操作,你可以通过继承控制器的方法加以解决:
PHP复制代码
 
class MY_Controller extends CI_Controller
{
protected  $_data = array();
 function __construct()
{
  parent::__construct();
 $this->_pre_contruct();
}
 
protected function _pre_construct()
{
 $this->load->model('my_model');
//其他的操作,获取header所需的数据
$this->_data['header'] = $heaer;
}
}
 
复制代码


其他控制器继承于MY_Control, 都可以获得header所需的数据,如果稍有不同,可以覆盖_pre_control()函数即可。
PHP复制代码
 
class Blog extends MY_Controller
{
function __construct()
{
  parent::__construct();
}
 
protected function _pre_control()
{
  //覆盖父类的操作,可以改变header所需的数据,不写该函数即自动获得父类的header数据,$this->_data['header'];
}
public function index()
{
 $this->_data['body_data'] = $body_data;
$this->load->view('myview', $this->_data);
}
}
复制代码

 楼主| 发表于 2011-9-28 14:01:10 | 显示全部楼层
yuzhigang5460 发表于 2011-9-27 22:12
如果只是想解决避免每个控制器都要加载model的问题,可以在config里的autoload里配置一下这个model,
如果 ...

谢谢,我明白了。

本版积分规则