请问高手,如何在每个页面中都调用头文件?
比如说,我要做个blog,blog有个模板文件,分别是header.php和bottom.php,其中模板header.php由控制器Header中output()方法解析并返回,模板bottom.php由控制器Bottom中output()方法解析并返回
那么我现在要在所有其他的控制器中输出并显示头、尾文件,是不是只能在控制器__construct()中
require('/app/controllers/header.php);
echo Header::output();
然后在控制器的__desctruct()中
require('/app/controllers/bottom.php);
echo Bottom::output();
这样才可以?
但是我觉得这样不太像oo的风格,而且在PHP4下不能运行(因为貌似PHP4不认识__construct()和__destruct()),有没有更好的办法?
大家一般在调用这样公共显示的部分时,是怎么做的?
谢谢。
[ 本帖最后由 shishirui 于 2008-2-14 00:25 编辑 ] 你这样不行吧?
我一般就是在视图里嵌套另外的视图。 <?=$this->load->view('HeaderView')?>
如楼上说的那样,在视图里面加载另一个视图文件 哦原来这样啊
那如果'HeaderView'里面有变量,我需要把一些值赋值给变量怎么弄呢?
<?=$this->load->view('HeaderView',$data)?>
$data要从数据库中取得,总不能在模板里写这段数据库操作代码吧?因为感觉不太好~
谢谢
[ 本帖最后由 shishirui 于 2008-2-14 00:25 编辑 ] load 父视图的时候把 $data 传进去。
PS: 楼上这么写,倒是另一种方法,只是我没试过。 也可以不在view中写,
直接在Controller中调用,
传入view。 嗯,谢谢楼上和楼上,似乎现在也只有这种方法比较好了。 原帖由 shishirui 于 2008-2-14 00:23 发表 http://codeigniter.org.cn/forums/images/common/back.gif
哦原来这样啊
那如果'HeaderView'里面有变量,我需要把一些值赋值给变量怎么弄呢?
$data要从数据库中取得,总不能在模板里写这段数据库操作代码吧?因为感觉不太好~
谢谢 ...
这样的写法,就等同Smarty的{include}那样,你说的传入$data,按我说的那样,HeaderView其实完全就没必要再去传入$data了,比方你在ProductsController里面调用ProductsView,并传入$data,然后ProductsView里面加载HeaderView,那么HeaderView的视图变量就是ProductsController传入的咯,而头部文件一般都有一些固定的变量值吧,那么只要在父Controller里面先设定一些固定的,然后子Controller都继承它,也就不需要再每次都去重设置值,如果需要重设,也只是用新值去覆盖掉旧的。我这样说你可能觉得很迷糊,因为之前我是用smarty,后来用ThinkPHP也是这样,一直是用这种方法。
而且楼上说的写法是一样的呀,只是写的地方不同,怎么灵活去运用才是重点:)
回复 8楼 的帖子
非常感谢您的回复。明白了很多了,但是不知道在ci里面如何设置父Controller和子Controller?好像没有这样的功能是吗? 不需要去设置什么,是面向对象编程的设计,比方说你的全部或一些视图文件都需要加载HeaderView和FooterView,而这两个视图文件都需要设置一下东西变量之类的,你就可以写在一个Controller里面,然后用其它的Controller文件继承他,这样全部Controller都能获得同样的功能了,不必重复写同样的代码。
//Base继承Controller类,然后就可以在Base里面定义一些其它Controller类都需要用到的方法和属性等等
class Base extends Controller{
function __construct(){
parent::Controller();
$this->load->helper('MyHelper');
}
function index(){
......
}
function _createFCK(){
......
$this->data['fckhtml'] = $oFCKeditor->CreateHtml();
}
}
//Home继承Base类,这样就可以获得同样的方法和属性
class Home extends Base{
}
[ 本帖最后由 tiana 于 2008-2-14 15:13 编辑 ]
页:
[1]
2