pcjingl 发表于 2014-11-17 19:41:50

不知道大家对视图的布局如何做的?附上我的处理方法

CI 版本 2.2.0

虽然我们可以这样写:
$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 结构,例如:
<!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 $this->load->view($tpl_file);?> 这段代码。

第二步:修改控制对应的方法,把加载视图的代码$this->load->view(...) 改为:
$this->load->view('layout/index_layout', array(
'tpl_file' => 'article'
));
基本意思是:先加载布局文件,并赋值tpl_file变量指向到此方法需要加载的视图文件。

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

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

Closer 发表于 2014-11-18 09:20:19

感覺彈性有點不好

我用的是 appleboy 提供的方法:
http://blog.wu-boy.com/2011/07/%E7%B0%A1%E6%98%93-codeigniter-layout-library-for-template/

桥枫泊 发表于 2014-11-18 11:02:56

学习了

kuailewang 发表于 2014-11-18 11:42:15

采用这个吧
http://codeigniter.org.cn/forums/thread-19488-1-1.html

pcjingl 发表于 2014-11-18 12:10:38

都是很不错的方法,但有两点小疑虑:一是需要额外加载类库会多出一部分开销,二是视图先保存到变量中再输出性能上是否不够优化。

Closer 发表于 2014-11-18 12:50:48

pcjingl 发表于 2014-11-18 12:10
都是很不错的方法,但有两点小疑虑:一是需要额外加载类库会多出一部分开销,二是视图先保存到变量中再输出 ...

應該是沒差多少

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

 

阿呆 发表于 2014-11-19 13:40:35

简单点的话,在view直接用include('head.php')

pcjingl 发表于 2014-11-19 16:01:12

阿呆 发表于 2014-11-19 13:40
简单点的话,在view直接用include('head.php')

include 涉及到路径问题

页: [1]
查看完整版本: 不知道大家对视图的布局如何做的?附上我的处理方法