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之数组(遍历顺序)  Laruence原创
Jun 13 PHP
phpexcel导出excel的颜色和网页中的颜色显示不一致
Dec 11 PHP
PHP读取xml方法介绍
Jan 12 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
php以post形式发送xml的方法
Nov 04 PHP
php用户注册信息验证正则表达式
Nov 12 PHP
Symfony2实现从数据库获取数据的方法小结
Mar 18 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
PHP实现登录验证码校验功能
May 17 PHP
Yii2.0 RESTful API 基础配置教程详解
Dec 26 PHP
PHP实现计算器小功能
Aug 28 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
Sep 15 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
360通用php防护代码(使用操作详解)
2013/06/18 PHP
[原创]php集成安装包wampserver修改密码后phpmyadmin无法登陆的解决方法
2016/11/23 PHP
Laravel框架中集成MongoDB和使用详解
2019/10/17 PHP
JavaScript 事件参考手册
2008/12/24 Javascript
jQuery:delegate中select()不起作用的解决方法(实例讲解)
2014/01/26 Javascript
BootStrap学习笔记之nav导航栏和面包屑导航
2017/01/03 Javascript
JS实现带导航城市列表以及输入搜索功能
2018/01/04 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
vue-cli和v-charts实现可视化图表过程解析
2019/10/08 Javascript
如何基于JS截获动态代码
2019/12/25 Javascript
微信小程序实现列表滚动头部吸顶的示例代码
2020/07/12 Javascript
[02:27]刀塔重生降临
2015/10/14 DOTA
Python中使用动态变量名的方法
2014/05/06 Python
Python变量作用范围实例分析
2015/07/07 Python
Python3计算三角形的面积代码
2017/12/18 Python
Python操作Redis之设置key的过期时间实例代码
2018/01/25 Python
python删除服务器文件代码示例
2018/02/09 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
使用Filter过滤python中的日志输出的实现方法
2019/07/17 Python
python 获取sqlite3数据库的表名和表字段名的实例
2019/07/17 Python
python实现12306登录并保存cookie的方法示例
2019/12/17 Python
python shapely.geometry.polygon任意两个四边形的IOU计算实例
2020/04/12 Python
python获得命令行输入的参数的两种方式
2020/11/02 Python
python如何编写类似nmap的扫描工具
2020/11/06 Python
如何使用Django Admin管理后台导入CSV
2020/11/06 Python
详解Python爬虫爬取博客园问题列表所有的问题
2021/01/18 Python
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
托管代码(Managed Code)和非托管代码(Unmanaged Code)有什么区别
2014/09/29 面试题
高中毕业生自我鉴定例文
2013/12/29 职场文书
《三袋麦子》教学反思
2014/03/02 职场文书
2015年党建工作目标责任书
2015/05/08 职场文书
《比尾巴》教学反思
2016/02/24 职场文书