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
一个可以找出源代码中所有中文的工具
Oct 25 PHP
Linux下ZendOptimizer的安装与配置方法
Apr 12 PHP
php 正则 过滤html 的超链接
Jun 02 PHP
PHP设置图片文件上传大小的具体实现方法
Oct 11 PHP
利用phpexcel把excel导入数据库和数据库导出excel实现
Jan 09 PHP
php中__destruct与register_shutdown_function执行的先后顺序问题
Oct 17 PHP
浅析Yii2中GridView常见操作
Apr 22 PHP
PHP中使用mpdf 导出PDF文件的实现方法
Oct 22 PHP
thinkphp5实现无限级分类
Feb 18 PHP
PHP去除空数组且数组键名重置的讲解
Feb 28 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
Sep 09 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
web方式ftp
2006/10/09 PHP
PHP对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
部署PHP项目应该注意的几点事项分享
2013/12/20 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
PHP对象的浅复制与深复制的实例详解
2017/10/26 PHP
PHP的图像处理实例小结【文字水印、图片水印、压缩图像等】
2019/12/20 PHP
Javascript MD4
2006/12/20 Javascript
网页中CDATA标记的说明
2010/09/12 Javascript
动态获取复选框checkbox选中个数的jquery代码
2013/06/25 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
微信小程序 页面跳转和数据传递实例详解
2017/01/19 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
详解使用nvm安装node.js
2017/07/18 Javascript
简单实现jQuery手风琴效果
2017/08/18 jQuery
Angular开发实践之服务端渲染
2018/03/29 Javascript
微信小程序仿美团城市选择
2018/06/06 Javascript
vue计算属性+vue中class与style绑定(推荐)
2020/03/30 Javascript
Vue如何将页面导出成PDF文件
2020/08/17 Javascript
基于ajax实现上传图片代码示例解析
2020/12/03 Javascript
python素数筛选法浅析
2018/03/19 Python
numpy 进行数组拼接,分别在行和列上合并的实例
2018/05/08 Python
python退出命令是什么?详解python退出方法
2018/12/10 Python
Python minidom模块用法示例【DOM写入和解析XML】
2019/03/25 Python
Django框架自定义模型管理器与元选项用法分析
2019/07/22 Python
python代码 FTP备份交换机配置脚本实例解析
2019/08/01 Python
Pytorch 的损失函数Loss function使用详解
2020/01/02 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
localStorage 设置过期时间的方法实现
2018/12/21 HTML / CSS
英国著名的茶叶品牌:Whittard of Chelsea
2016/09/22 全球购物
大专生简历的自我评价
2013/11/26 职场文书
实习生矿工检讨书
2014/10/13 职场文书
基层党组织整改方案
2014/10/25 职场文书
写给老婆的保证书
2015/02/27 职场文书
垂直极限观后感
2015/06/08 职场文书
2016年三严三实党课学习心得体会
2016/01/06 职场文书