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 相关文章推荐
用C/C++扩展你的PHP 为你的php增加功能
Sep 06 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
PHP学习笔记之字符串编码的转换和判断
May 22 PHP
ThinkPHP基于PHPExcel导入Excel文件的方法
Oct 15 PHP
PHP Reflection API详解
May 12 PHP
PHP实现在线阅读PDF文件的方法
Jun 17 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
CentOS下与Apache连接的PHP多版本共存方案实现详解
Dec 19 PHP
PHPStorm+XDebug进行调试图文教程
Jun 13 PHP
thinkPHP5.0框架安装教程
Mar 25 PHP
浅谈PHP中的Trait使用方法
Mar 22 PHP
在laravel中使用with实现动态添加where条件
Oct 10 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一些十分严重的缺陷详解
2013/06/03 PHP
Yii框架实现图片上传的方法详解
2017/05/20 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
Windows平台PHP+IECapt实现网页批量截图并创建缩略图功能详解
2019/08/02 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
javaScript checkbox 全选/反选及批量删除
2010/04/28 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
详解JavaScript中的every()方法
2015/06/08 Javascript
基于jquery实现在线选座订座之影院篇
2015/08/24 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
使用Vue 实现滑动验证码功能
2019/06/27 Javascript
原生JS实现弹幕效果的简单操作指南
2020/11/10 Javascript
Python实现多线程HTTP下载器示例
2017/02/11 Python
Python实现统计代码行的方法分析
2017/07/12 Python
python中实现数组和列表读取一列的方法
2018/04/03 Python
详解Python 协程的详细用法使用和例子
2018/06/15 Python
Python 私有化操作实例分析
2019/11/21 Python
Python CSV文件模块的使用案例分析
2019/12/21 Python
基于Django signals 信号作用及用法详解
2020/03/28 Python
解决jupyter运行pyqt代码内核重启的问题
2020/04/16 Python
Python Tornado核心及相关原理详解
2020/06/24 Python
Django DRF认证组件流程实现原理详解
2020/08/17 Python
python实现学生信息管理系统源码
2021/02/22 Python
检测浏览器是否支持html5视频的代码
2013/03/28 HTML / CSS
美国在线购物频道:Shop LC
2019/04/21 全球购物
幼儿园教师自我鉴定
2014/03/20 职场文书
庆元旦演讲稿
2014/09/15 职场文书
大学生职业生涯规划大赛作品(精品)
2014/09/17 职场文书
社区党员群众路线教育实践活动心得体会
2014/11/03 职场文书
工程部文员岗位职责
2015/02/04 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
golang switch语句的灵活写法介绍
2021/05/06 Golang
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫