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个人网站架设连环讲(二)
Oct 09 PHP
按上下级层次关系输出内容的PHP代码
Jul 17 PHP
php数组函数序列之array_key_exists() - 查找数组键名是否存在
Oct 29 PHP
PHP中isset()和unset()函数的用法小结
Mar 11 PHP
PHP版本如何选择?应该使用哪个版本?
May 13 PHP
举例详解PHP脚本的测试方法
Aug 05 PHP
微信公众平台开发(五) 天气预报功能开发
Dec 03 PHP
Yii2.0多文件上传实例说明
Jul 24 PHP
PHP实现UTF8二进制及明文字符串的转化功能示例
Nov 20 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
php微信扫码支付 php公众号支付
Mar 24 PHP
php优化查询foreach代码实例讲解
Mar 24 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
工厂模式在Zend Framework中应用介绍
2012/07/10 PHP
linux下安装php的memcached客户端
2014/08/03 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
window.event快达到全浏览器支持了,以后使用就方便了
2011/11/30 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
极力推荐一款小巧玲珑的可视化编辑器bootstrap-wysiwyg
2016/05/27 Javascript
jQuery+css实现非常漂亮的水平导航菜单效果
2016/07/27 Javascript
Bootstrap笔记之缩略图、警告框实例详解
2017/03/09 Javascript
简单实现js轮播图效果
2017/07/14 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
vue 实现剪裁图片并上传服务器功能
2018/03/01 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
jquery向后台提交数组的代码分析
2020/02/20 jQuery
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
Python运行的17个时新手常见错误小结
2012/08/07 Python
python执行子进程实现进程间通信的方法
2015/06/02 Python
Python基于有道实现英汉字典功能
2015/07/25 Python
python PyTorch参数初始化和Finetune
2018/02/11 Python
PyTorch上实现卷积神经网络CNN的方法
2018/04/28 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
2019/07/30 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
python生成特定分布数的实例
2019/12/05 Python
Python telnet登陆功能实现代码
2020/04/16 Python
Pycharm自带Git实现版本管理的方法步骤
2020/09/18 Python
详解vscode实现远程linux服务器上Python开发
2020/11/10 Python
Sunglasses Shop荷兰站:英国最大的太阳镜独立在线零售商和供应商
2017/01/08 全球购物
药学专业大学生个人的自我评价
2013/11/04 职场文书
小学校长竞聘演讲稿
2014/05/16 职场文书
宣传活动总结范文
2014/07/01 职场文书
2015年宣传部工作总结范文
2015/03/31 职场文书
庭外和解协议书
2016/03/23 职场文书
Java实战之课程信息管理系统的实现
2022/04/01 Java/Android
Java实现超大Excel文件解析(XSSF,SXSSF,easyExcel)
2022/07/15 Java/Android