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

[讨论/交流] 不知道大家对视图的布局如何做的?附上我的处理方法

[复制链接]
发表于 2014-11-17 19:41:50 | 显示全部楼层 |阅读模式
CI 版本 2.2.0

虽然我们可以这样写:
PHP复制代码
$this->load->view('header');
$this->load->view('menu');
$this->load->view('content', $data);
$this->load->view('footer');
复制代码


但每个控制器中的方法都这样写视乎很麻烦,特别是布局文件过多时,例如:top,left,center,right...,岂不是要哭了!最重要的是想要删除或增加都需要修改控制器中的代码。

我的做法是:
第一步:定义布局文件并保存到你的模板目录,例如 index_layout.php ,在布局文件中创建基本的 HTML 结构,例如:
HTML复制代码
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<div id="header">...</div>
<div id="content">
<?php $this->load->view($tpl_file);?>
</div>
<div id="footer">...</div>
</body>
</html>
复制代码

请注意:
PHP复制代码
<?php $this->load->view($tpl_file);?>
复制代码
这段代码。

第二步:修改控制对应的方法,把加载视图的代码
PHP复制代码
$this->load->view(...)
复制代码
改为:
PHP复制代码
$this->load->view('layout/index_layout', array(
'tpl_file' => 'article'
));
复制代码

基本意思是:先加载布局文件,并赋值tpl_file变量指向到此方法需要加载的视图文件。

说明:可以创建多个布局文件,按需使用。其中布局文件也可以改成如下的代码:
PHP复制代码
<?php $this->load->view('layout/header');?>
<?php $this->load->view($tpl_file);?>
<?php $this->load->view('layout/footer');?>
复制代码


不知道我的这种办法是好是坏呢?{:soso_e106:}

发表于 2014-11-18 09:20:19 | 显示全部楼层
感覺彈性有點不好

我用的是 appleboy 提供的方法:

http://blog.wu-boy.com/2011/07/% ... brary-for-template/

发表于 2014-11-18 11:42:15 | 显示全部楼层

点评

Hex
哈哈,我正想贴过来,就发现你已经贴了。。。  发表于 2014-11-18 11:43
 楼主| 发表于 2014-11-18 12:10:38 | 显示全部楼层
都是很不错的方法,但有两点小疑虑:一是需要额外加载类库会多出一部分开销,二是视图先保存到变量中再输出性能上是否不够优化。
发表于 2014-11-18 12:50:48 | 显示全部楼层
pcjingl 发表于 2014-11-18 12:10
都是很不错的方法,但有两点小疑虑:一是需要额外加载类库会多出一部分开销,二是视图先保存到变量中再输出 ...

應該是沒差多少

以我的觀點來看
大多會影響網頁跑太慢的主因不外乎兩點:
1.圖片解析度太大
2.資料庫資料太多

 
发表于 2014-11-19 13:40:35 | 显示全部楼层
简单点的话,在view直接用include('head.php')
 楼主| 发表于 2014-11-19 16:01:12 | 显示全部楼层
阿呆 发表于 2014-11-19 13:40
简单点的话,在view直接用include('head.php')

include 涉及到路径问题

本版积分规则