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 相关文章推荐
攻克CakePHP系列一 连接MySQL数据库
Oct 22 PHP
PHP 读取文件内容代码(txt,js等)
Dec 06 PHP
php中curl和file_get_content的区别
May 10 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
Jun 08 PHP
PHP数组操作――获取数组最后一个值的方法
Apr 14 PHP
php中的登陆login实例代码
Jun 20 PHP
PHP实现批量检测网站是否能够正常打开的方法
Aug 23 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
Aug 06 PHP
php设计模式之装饰模式应用案例详解
Jun 17 PHP
php array_chunk()函数用法与注意事项
Jul 12 PHP
PHP PDO和消息队列的个人理解与应用实例分析
Nov 25 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
我的论坛源代码(十)
2006/10/09 PHP
PHP隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php时间戳转换的示例
2014/03/31 PHP
php多进程模拟并发事务产生的问题小结
2018/12/07 PHP
JavaScript 脚本将当地时间转换成其它时区
2009/03/19 Javascript
IE 下的只读 innerHTML
2009/08/21 Javascript
Grid得到选择行数据的方法总结
2011/01/17 Javascript
jquery实现兼容浏览器的图片上传本地预览功能
2013/10/14 Javascript
简单易用的倒计时js代码
2014/08/04 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
对Web开发中前端框架与前端类库的一些思考
2015/03/27 Javascript
JS+CSS实现仿支付宝菜单选中效果代码
2015/09/25 Javascript
用JS动态改变表单form里的action值属性的两种方法
2016/05/25 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
p5.js实现动态图形临摹
2019/10/23 Javascript
JavaScript实现简单的弹窗效果
2020/05/19 Javascript
基于Python数据可视化利器Matplotlib,绘图入门篇,Pyplot详解
2017/10/13 Python
用Python删除本地目录下某一时间点之前创建的所有文件的实例
2017/12/14 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
NLTK 3.2.4 环境搭建教程
2018/09/19 Python
Python如何实现转换URL详解
2019/07/02 Python
python实现微信小程序用户登录、模板推送
2019/08/28 Python
python数据持久存储 pickle模块的基本使用方法解析
2019/08/30 Python
Python 批量读取文件中指定字符的实现
2020/03/06 Python
使用OpenCV去除面积较小的连通域
2020/07/05 Python
中药专业大学生医药工作求职信
2013/10/25 职场文书
自荐书模板
2013/12/19 职场文书
高中美术教学反思
2014/01/19 职场文书
终止合同协议书
2014/04/17 职场文书
旅游活动总结
2014/08/27 职场文书
竞选纪律委员演讲稿
2014/09/13 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
花木兰观后感
2015/06/10 职场文书
sass 常用备忘案例详解
2021/09/15 HTML / CSS
Linux中文件的基本属性介绍
2022/06/01 Servers