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 Smarty模板生成html文档的方法
Apr 12 PHP
PHP下通过exec获得计算机的唯一标识[CPU,网卡 MAC地址]
Jun 09 PHP
PHP字符串的递增和递减示例介绍
Feb 11 PHP
jQuery中的RadioButton,input,CheckBox取值赋值实现代码
Feb 18 PHP
PHP中nowdoc和heredoc使用需要注意的一点
Mar 21 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
PHP获取当前页面URL函数实例
Oct 22 PHP
PHP实现163邮箱自动发送邮件
Mar 29 PHP
PHP基于mssql扩展远程连接MSSQL的简单实现方法
Oct 08 PHP
PHP实现数组向任意位置插入,删除,替换数据操作示例
Apr 05 PHP
PHP 判断字符串是中文还是英文, 或者是中英混合
Mar 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
php简单实现快速排序的方法
2015/04/04 PHP
PHP中用mysqli面向对象打开连接关闭mysql数据库的方法
2016/11/05 PHP
thinkPHP中钩子的使用方法实例分析
2017/11/16 PHP
PHP面向对象五大原则之开放-封闭原则(OCP)详解
2018/04/04 PHP
小议Javascript中的this指针
2010/03/18 Javascript
js+css使DIV始终居于屏幕中间 左下 左上 右上 右下的代码集合
2011/03/10 Javascript
jQuery Ajax 实例全解析
2011/04/20 Javascript
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
jquery分页对象使用示例
2014/04/01 Javascript
jQuery实现响应浏览器缩放大小并改变背景颜色
2014/10/31 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
2015/08/25 Javascript
jquery单击事件和双击事件冲突解决方案
2016/03/02 Javascript
浅谈bootstrap源码分析之tab(选项卡)
2016/06/06 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
解决vue this.$forceUpdate() 处理页面刷新问题(v-for循环值刷新等)
2018/07/26 Javascript
微信小程序云开发实现增删改查功能
2019/05/17 Javascript
快速解决vue2+vue-cli3项目ie兼容的问题
2020/11/17 Vue.js
[03:11]TI9战队档案 - Alliance
2019/08/20 DOTA
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
解决Pycharm下面出现No R interpreter defined的问题
2018/10/29 Python
pandas ix &amp;iloc &amp;loc的区别
2019/01/10 Python
python反编译学习之字节码详解
2019/05/19 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python脚本之一键移动自定格式文件方法实例
2019/09/02 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
2019/09/20 Python
Python实现投影法分割图像示例(一)
2020/01/17 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
Python Django路径配置实现过程解析
2020/11/05 Python
HTML5 新事件 小结
2009/07/16 HTML / CSS
Final类有什么特点
2012/04/25 面试题
家长写给老师的建议书
2014/03/13 职场文书
彩妆大赛策划方案
2014/05/13 职场文书
党的群众路线教育实践活动个人整改方案
2014/09/21 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang