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 Zip压缩 在线对文件进行压缩的函数
May 26 PHP
PHP中MVC模式的模板引擎开发经验分享
Mar 23 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
第4章 数据处理-php数组的处理-郑阿奇
Jul 04 PHP
PHP学习散记_编码(json_encode 中文不显示)
Nov 10 PHP
php中0,null,empty,空,false,字符串关系的详细介绍
Jun 20 PHP
深入剖析浏览器退出之后php还会继续执行么
May 17 PHP
php使用escapeshellarg时中文被过滤的解决方法
Jul 10 PHP
php微信开发自定义菜单
Aug 27 PHP
php抛出异常与捕捉特定类型的异常详解
Oct 26 PHP
thinkPHP5框架自定义验证器实现方法分析
Jun 11 PHP
PHP抽象类基本用法示例
Dec 28 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 curl模拟浏览器采集阿里巴巴的实现代码
2011/04/20 PHP
Windows Server 2008 R2和2012中PHP连接MySQL过慢的解决方法
2016/07/02 PHP
php关联数组与索引数组及其显示方法
2018/03/12 PHP
PHP实现PDO操作mysql存储过程示例
2019/02/13 PHP
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
2007/01/16 Javascript
在iframe里的页面编写js,实现在父窗口上创建动画效果展开和收缩的div(不变动iframe父窗口代码)
2011/12/20 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
2012/12/27 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
js中的内部属性与delete操作符介绍
2015/08/10 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
JS传值出现中文参数乱码的解决方法
2016/06/30 Javascript
bootstrap使用validate实现简单校验功能
2016/12/02 Javascript
Servlet实现文件上传,可多文件上传示例
2016/12/05 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
详解基于Angular4+ server render(服务端渲染)开发教程
2017/08/28 Javascript
Three.js实现浏览器变动时进行自适应的方法
2017/09/26 Javascript
Vue批量图片显示时遇到的路径被解析问题
2019/03/28 Javascript
详解vuex之store源码简单解析
2019/06/13 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
js瀑布流布局的实现
2020/06/28 Javascript
Python通过命令开启http.server服务器的方法
2017/11/04 Python
pip安装Python库时遇到的问题及解决方法
2017/11/23 Python
Jupyter Notebook 远程访问配置详解
2021/01/11 Python
CSS3 边框效果
2019/11/04 HTML / CSS
Haglöfs瑞典官方网站:haglofs火柴棍,欧洲顶级户外品牌
2018/10/18 全球购物
婚鞋、新娘鞋、礼服鞋、童鞋:Nina Shoes
2019/09/04 全球购物
荷兰家电购物网站:Expert.nl
2020/01/18 全球购物
优秀管理者获奖感言
2014/02/17 职场文书
2014年车间工作总结
2014/11/21 职场文书
2014年就业工作总结
2014/11/26 职场文书
2015年度质量工作总结报告
2015/04/27 职场文书
学习经验交流会策划书
2015/11/02 职场文书
2019年最新感恩节祝福语(28句)
2019/11/27 职场文书
Nginx已编译的nginx-添加新模块
2021/04/01 Servers
elasticSearch-api的具体操作步骤讲解
2021/06/28 Java/Android