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 编写的 25个游戏脚本
May 11 PHP
解析thinkphp基本配置 convention.php
Jun 18 PHP
采用thinkphp自带方法生成静态html文件详解
Jun 13 PHP
php基于mcrypt的加密解密实例
Oct 27 PHP
PHP判断网络文件是否存在的方法
Mar 12 PHP
php封装的mysqli类完整实例
Oct 18 PHP
ThinkPHP3.2框架使用addAll()批量插入数据的方法
Mar 16 PHP
PHP count()函数讲解
Feb 03 PHP
php+lottery.js实现九宫格抽奖功能
Jul 21 PHP
thinkPHP5使用Rabc实现权限管理
Aug 28 PHP
laravel http 自定义公共验证和响应的方法
Sep 29 PHP
laravel框架的安装与路由实例分析
Oct 11 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分页显示制作详细讲解
2006/10/09 PHP
PHP新手上路(十四)
2006/10/09 PHP
在JavaScript中调用php程序
2009/03/09 PHP
php 向访客和爬虫显示不同的内容
2009/11/09 PHP
PHP中10个不常见却非常有用的函数
2010/03/21 PHP
php中长文章分页显示实现代码
2012/09/29 PHP
php替换字符串中间字符为省略号的方法
2015/05/04 PHP
深入讲解PHP的Yii框架中的属性(Property)
2016/03/18 PHP
jquery 双色表格实现代码
2009/12/08 Javascript
基于jQuery的表格操作插件
2010/04/22 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
Firefox下无法正常显示年份的解决方法
2014/09/04 Javascript
JavaScript基于setTimeout实现计数的方法
2015/05/08 Javascript
关于session和cookie的简单理解
2016/06/08 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
python实现批量监控网站
2016/09/09 Python
解决Mac下首次安装pycharm无project interpreter的问题
2018/10/29 Python
numpy.meshgrid()理解(小结)
2019/08/01 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
python创建ArcGIS shape文件的实现
2019/12/06 Python
python sitk.show()与imageJ结合使用常见的问题
2020/04/20 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
2020/05/25 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
python requests库的使用
2021/01/06 Python
PyQt5中QSpinBox计数器的实现
2021/01/18 Python
丝芙兰香港官网:Sephora香港
2018/03/13 全球购物
高职助产应届生自荐信
2013/09/24 职场文书
一名老师的自我评价
2014/02/07 职场文书
公司司机岗位职责
2014/02/07 职场文书
中秋节国旗下演讲稿
2014/09/13 职场文书
2014年个人教学工作总结
2014/12/09 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
2016年6月份红领巾广播稿
2015/12/21 职场文书
《狮子和鹿》教学反思
2016/02/16 职场文书
2019通用版导游词范本!
2019/08/07 职场文书