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生成的一个树叶图片画图例子
Apr 16 PHP
PHP中SimpleXML函数用法分析
Nov 26 PHP
Yii配置文件用法详解
Dec 04 PHP
PHP中使用php5-ffmpeg撷取视频图片实例
Jan 07 PHP
[原创]php获取数组中键值最大数组项的索引值
Mar 17 PHP
PHP随机生成信用卡卡号的方法
Mar 23 PHP
WAMP环境中扩展oracle函数库(oci)
Jun 26 PHP
基于thinkPHP实现的微信自定义分享功能示例
Sep 23 PHP
PHP读MYSQL中文乱码的快速解决方法
Oct 01 PHP
php封装的smarty类完整实例
Oct 19 PHP
利用switch语句进行多选一判断的实例代码
Nov 14 PHP
使用PHPExcel导出Excel表
Sep 08 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
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
2012/08/21 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
PHP中单例模式与工厂模式详解
2017/02/17 PHP
php ajax confirm 删除实例详解
2019/03/06 PHP
laravel 验证错误信息到 blade模板的方法
2019/09/29 PHP
Prototype String对象 学习
2009/07/19 Javascript
Jquery练习之表单验证实现代码
2010/12/14 Javascript
js/jQuery简单实现选项卡功能
2014/01/02 Javascript
javascript单引号和双引号的区别和处理
2014/05/14 Javascript
使用GruntJS构建Web程序之安装篇
2014/06/04 Javascript
node.js中的http.get方法使用说明
2014/12/14 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
AngularJS中如何使用$parse或$eval在运行时对Scope变量赋值
2016/01/25 Javascript
jQuery插件开发精品教程让你的jQuery提升一个台阶
2016/01/27 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
extjs图表绘制之条形图实现方法分析
2020/03/06 Javascript
有关vue 开发钉钉 H5 微应用 dd.ready() 不执行问题及快速解决方案
2020/05/09 Javascript
用Python实现一个简单的线程池
2015/04/07 Python
Python base64编码解码实例
2015/06/21 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
PyQt5每天必学之事件与信号
2018/04/20 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
Python中print函数简单使用总结
2019/08/05 Python
python多线程同步之文件读写控制
2021/02/25 Python
python爬虫学习笔记之Beautifulsoup模块用法详解
2020/04/09 Python
Tensorflow中的图(tf.Graph)和会话(tf.Session)的实现
2020/04/22 Python
美国名表在线商城:Ashford(支持中文)
2019/09/24 全球购物
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
家长对孩子的感言
2014/03/10 职场文书
教师节演讲稿
2014/05/06 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
离婚协议书样本
2015/01/26 职场文书
2015年全国爱眼日活动小结
2015/02/27 职场文书
golang中的并发和并行
2021/05/08 Golang
解决MySQL添加新用户-ERROR 1045 (28000)的问题
2022/03/03 MySQL