|
发表于 2012-7-19 14:11:40
|
显示全部楼层
本帖最后由 sdink 于 2012-7-19 14:13 编辑
include 啊 大哥。
视图
main.php
include(‘header.php’)
<div id="main">干嘛呢</div>
include(‘footer.php’)
视图
header.php
<?php if(isset(用户名)){echo ‘你的用户名是XXX’} ?>
控制器
$this->load->view("main",$data);
这有什么问题吗?
如果你的header.php或footer.php里有很多的php要操作,就用$this->
然后把你的控制器继承一个类(器继承在继承CI的控制器类,所谓的MY_XXX),在那个类里实现你要在header.php和footer.php里的数据
注意:
1 如果不是经常更新的内容用缓存或是生成,
2 在你的视图里有时不存在的变量时用isset去判断是否存在,这个不就不会出现错误了吗
是这样的,你的header.php和footer.php两个是公共的,但是你的控制器会对应每个不同的页面,而每个控制器都要从数据库里读数据显得繁琐,一但数据有变动或是header.php或footer.php里的变量有改变。你几乎要所有的控制器或是每个函数里的都得改。为了解决这种方案,你的控制器(若test)要继承一个核心类,这个核心类初始化(__construct())时都从数据库里读出来直接赋值给$this->XXX,这个核心类要怎么写呢。这就要扩展CI核心类了。在你的项目core目录下写一个如MY_Controller类,而MY_Controller继承CI_Controller,这样你以后要改header.php若footer.php里的数据直接在MY_Controller相应的地方改,不影响其他操作,而在你的视图里直接用include(‘header.php’),然后在header.php里用$this->XXX调用。但是,这个时候会出现一种情况,说是load类里没有XXX这个变量,怎么办呢。回到你的MY_Controller里。把$this->XXX改成$this->load->XXX,即可使用
|
|