手心手背 发表于 2011-9-27 15:31:39

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

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

jeongee 发表于 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 static/image/common/back.gif
$this->load->view('header');
$this->load->view('main');
$this->load->view('footer');

header里的逻辑部份呢,我要怎么引用 ?
请给一个具体的,谢谢

jeongee 发表于 2011-9-27 16:32:40

那你要的是HMVC了:移步:http://codeigniter.org.cn/forums/forum.php?mod=viewthread&tid=1319&page=13#lastpost

dde333 发表于 2011-9-27 20:06:08

不太懂哦,学习学习!

yuzhigang5460 发表于 2011-9-27 22:12:26

本帖最后由 yuzhigang5460 于 2011-9-27 22:20 编辑

如果只是想解决避免每个控制器都要加载model的问题,可以在config里的autoload里配置一下这个model,
如果不仅仅是加载model,还有一些其他的逻辑操作,你可以通过继承控制器的方法加以解决:

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()函数即可。

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 static/image/common/back.gif
如果只是想解决避免每个控制器都要加载model的问题,可以在config里的autoload里配置一下这个model,
如果 ...

谢谢,我明白了。
页: [1]
查看完整版本: 如何调用公共文件,例如头部文件?