CodeIgniter模板引擎使用实例


Posted in PHP onJuly 15, 2014

一、示例:

通常在使用codeigniter的时候经常使用这样的方式载入:

$this->load->view('about', $data);

通过这个类库,可以将一个视图载入到这个模板中:

$this->template->load('template', 'about', $data);

这里将视图about.php载入到template模板文件中。

二、安装

下载ci_template_library.zip
解压后将Template.php放到application/libraries应用类库目录中;
应用程序启动自动加载application/config/autoload.php;

三、创建一个模板文件application/views/template.php
模板中的代码如下:

<html>
<body>
  <div id="contents"><?= $contents ?></div>
  <div id="footer">Copyright 2008</div>
</body>
</html>

$contents是你在控制器中显示需要插入的内容。

四、创建一个视图application/views/about.php
添加如下代码:

<h1>About</h1>
<p>I'm so human!</p>

在模板引擎中载入视图
在你的控制器中可以使用

$this->template->load('template', 'about');

这个模板引擎工作流程:

视图被载入到一个变量中,这个变量会被载入到模板中去

var $template_data = array();
 
function set($name, $value)
{
 $this->template_data[$name] = $value;
}
 
function load($template = '', $view = '' , $view_data = array(), $return = FALSE)
{        
 $this->CI =& get_instance();
 $this->set('contents', $this->CI->load->view($view, $view_data, TRUE)); 
 return $this->CI->load->view($template, $this->template_data, $return);
}

五、技巧总结

高级技巧1:模板中更简单的短标记

例子:你如果需要在页面中显示标题。
那么在HTML的头部views/template.php增加:

<head>
  <title><?= $title ?></title>
</head>

然后直接在控制器中设置:

$this->template->set('title', 'About me');

高级技巧2:高亮显示当前导航

导航通常是被用于在模板中,一个体验好的导航应该告诉用户当前所处的位置分类是什么。

定义你的导航项目:

引入application/libraries/Template.php,然后在控制器中增加:

$this->set('nav_list', array('Home', 'Photos', 'About', 'Contact'));

更新你的模板:

在application/views/template.php中增加:

<ul class="navigation">
 <?php foreach($nav_list as $i => $nav_item): ?>
 <li class="<?= ($nav == $nav_item ? 'selected' : '')?>">
 <?= anchor($nav_item, $nav_item) ?>
 </li>
 <?php endforeach ?>
</ul>

这里用到了anchor函数,需要在自动加载配置中增加相关的小助手:

$autoload['helper'] = array('url');

更新你的控制器:

增加:

$this->template->set('nav', 'About');

需要注意:
1·如果所有的导航都在一个控制器中,你可以在析构函数中增加通用的导航代码;
2·定义好当前导航的样式,例如:#navigation .selected

高级技巧3:多模板

最简单处理多个模板,可以在libraries/Template.php定义多个新的方法来替换已经存在的内容,第二个高级技巧使用自定义的方法:

function load_main($view = '', $view_data = array(), $return = FALSE)
{
 $this->set('nav_list', array('Home', 'Photos', 'About', 'Contact'));
 $this->load('template', $view, $view_data, $return);
}

将代码粘贴到控制器中

$this->template->set('nav', 'About');
$this->template->set('title', 'About me');
$this->template->load_main('about');
PHP 相关文章推荐
PHP PDO函数库详解
Apr 27 PHP
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
May 10 PHP
解决PHP超大文件下载,断点续传下载的方法详解
Jun 06 PHP
PHP实现视频文件上传完整实例
Aug 28 PHP
微信公众平台接口开发入门示例
Dec 24 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
PHP模拟post提交数据方法汇总
Feb 16 PHP
php使用pdo连接sqlite3的配置示例
May 27 PHP
zend framework重定向方法小结
May 28 PHP
php+javascript实现的动态显示服务器运行程序进度条功能示例
Aug 07 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
Aug 28 PHP
PHP登录验证功能示例【用户名、密码、验证码、数据库、已登陆验证、自动登录和注销登录等】
Feb 25 PHP
PHP以mysqli方式连接类完整代码实例
Jul 15 #PHP
destoon实现底部添加你是第几位访问者的方法
Jul 15 #PHP
destoon实现调用热门关键字的方法
Jul 15 #PHP
destoon实现资讯信息前面调用它所属分类的方法
Jul 15 #PHP
destoon实现首页显示供应、企业、资讯条数的方法
Jul 15 #PHP
destoon实现公司新闻详细页添加评论功能的方法
Jul 15 #PHP
destoon数据库表说明汇总
Jul 15 #PHP
You might like
如何过滤高亮显示非法字符
2006/10/09 PHP
用ODBC的分页显示
2006/10/09 PHP
php读取msn上的用户信息类
2008/12/05 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP基于SimpleXML生成和解析xml的方法示例
2017/07/17 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
解决Laravel无法使用COOKIE和SESSION的问题
2019/10/16 PHP
一页面多XMLHttpRequest对象
2007/01/22 Javascript
Jquery 绑定时间实现代码
2011/05/03 Javascript
无闪烁更新网页内容JS实现
2013/12/19 Javascript
Javascript写入txt和读取txt文件示例
2014/02/12 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
JavaScript插件化开发教程 (一)
2015/01/27 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
浅谈JS继承_借用构造函数 &amp; 组合式继承
2016/08/16 Javascript
AngularJS入门教程之与服务器(Ajax)交互操作示例【附完整demo源码下载】
2016/11/02 Javascript
用Angular实时获取本地Localstorage数据,实现一个模拟后台数据登入的效果
2016/11/09 Javascript
Vue中添加过渡效果的方法
2017/03/16 Javascript
基于AngularJS的简单使用详解
2017/09/10 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
2018/07/24 Javascript
[02:30]辉夜杯主赛事第二日胜者组半决赛 CDEC.Y赛后采访
2015/12/26 DOTA
[06:14]《辉夜杯》外卡赛附加赛 4支战队巡礼
2015/10/23 DOTA
400多行Python代码实现了一个FTP服务器
2012/05/10 Python
Python3.2中Print函数用法实例详解
2015/05/19 Python
在python win系统下 打开TXT文件的实例
2018/04/29 Python
Django rest framework实现分页的示例
2018/05/24 Python
Python下简易的单例模式详解
2019/04/08 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python使用自定义钉钉机器人的示例代码
2020/06/24 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
css3教程之倾斜页面
2014/01/27 HTML / CSS
2014年学习厉行节约反对浪费思想汇报
2014/09/10 职场文书
交通运输局四风问题对照检查材料思想汇报
2014/10/09 职场文书