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字符串截取问题
Nov 28 PHP
global.php
Dec 09 PHP
PHP遍历目录并返回统计目录大小
Jun 09 PHP
PHP超牛逼无限极分类生成树方法
May 11 PHP
PHPStrom中实用的功能和快捷键大全
Sep 23 PHP
PHP中常见的缓存技术实例分析
Sep 23 PHP
浅析php-fpm静态和动态执行方式的比较
Nov 09 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 PHP
PHP设计模式之建造者模式(Builder)原理与用法案例详解
Dec 12 PHP
php7 错误处理机制修改实例分析
May 25 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
Aug 17 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
php另类上传图片的方法(PHP用Socket上传图片)
2013/10/30 PHP
php cookie使用方法学习笔记分享
2013/11/07 PHP
微信 开发生成带参数的二维码的实例
2016/11/23 PHP
点图片上一页下一页翻页效果
2008/07/09 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
js 动态文字滚动的例子
2011/01/17 Javascript
js常用代码段整理
2011/11/30 Javascript
Jquery图片滚动与幻灯片的实例代码
2013/04/08 Javascript
写JQuery插件的基本知识
2013/11/25 Javascript
jquery获取节点名称
2015/04/26 Javascript
js实现刷新iframe的方法汇总
2015/04/27 Javascript
基于JavaScript实现通用tab选项卡(通用性强)
2016/01/07 Javascript
JavaScript学习笔记之数组随机排序
2016/03/23 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
react router4+redux实现路由权限控制的方法
2018/05/03 Javascript
django简单的前后端分离的数据传输实例 axios
2020/05/18 Javascript
element跨分页操作选择详解
2020/06/29 Javascript
[01:00:25]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS Liquid
2018/03/31 DOTA
详细介绍Python语言中的按位运算符
2013/11/26 Python
Python3 加密(hashlib和hmac)模块的实现
2017/11/23 Python
python利用Opencv实现人脸识别功能
2019/04/25 Python
Pytorch加载部分预训练模型的参数实例
2019/08/18 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
ghd澳大利亚官方网站:英国最受欢迎的美发工具品牌
2018/05/21 全球购物
大学毕业感言100字
2014/02/03 职场文书
趣味体育活动方案
2014/02/08 职场文书
副总经理任命书
2014/06/05 职场文书
师范毕业生求职信
2014/07/11 职场文书
借款协议书
2014/09/16 职场文书
2014年政风行风工作总结
2014/11/22 职场文书
感谢信
2019/04/11 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
浅谈Python中的函数(def)及参数传递操作
2021/05/25 Python
ES6 解构赋值的原理及运用
2021/05/25 Javascript
Python实现byte转integer
2021/06/03 Python
Win11运行cmd提示“请求的操作需要提升”的两种解决方法
2022/07/07 数码科技