CI 模板解析器类
模板解析器类可以解析你的视图文件中的伪变量。它可以解析简单的变量或者以变量作为标签的结构。如果你以前没有用过模板引擎,那么伪变量如下所示:
<html>
<head>
<title>{blog_title}</title>
</head>
<body>
<h3>{blog_heading}</h3>
{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}
</body>
</html>
这些变量不是标准的PHP变量,但是这样的以文本形式展现可以让你很容易地区分出它与PHP变量的不同之处。
注意:因为在视图文件中使用纯PHP要快一些,所以CodeIgniter不 要求你一定要用这个类。然而,有一些开发者和对使用PHP有困难的设计师一同工作时,更愿意使用模板引擎。
Also Note: 模板解析类不是一个完善的模板解析方案。为了保持最高性能,我们的模板解析类非常精简。
类的初始化
如同CI中的其他类, 使用$this->load->library 函数在控制器中初始化模板解析类:
$this->load->library('parser');
一旦加载,模板解析类可以这样使用: $this->parser
下面的函数在库中可用:
$this->parser->parse()
这个方法接收一个模板名和数据数组作为输入,生成一个解析过的版本。例如:
$this->load->library('parser');
$data = array(
            'blog_title' => 'My Blog Title',
            'blog_heading' => 'My Blog Heading'
            );
$this->parser->parse('blog_template', $data);
第一个参数包含视图文件的文件名(在这个例子中是blog_template.php), 第二个参数包含一个用于模板替换的相关数组。 在上面的例子中,这个模板包含两个变量:{blog_title} 和 {blog_heading}
不用“echo”或处理$this->parser->parse()返回的数据。他会自动传送数据到output类最终输出到浏览器。然而,如果你想返回数据而不是发送到output类,你可以使用TRUE(布尔值)作为第三个参数。
$string = $this->parser->parse('blog_template', $data, TRUE);
$this->parser->parse_string()
This method works exactly like parse(), only accepts a string as the first parameter in place of a view file.
变量对
上面的示例代码中演示简单变量的替换。如果你想要替换整个块的变量,这个块的每行都包含新值?想象一下在页面最顶端我们展示的例子:
<html>
<head>
<title>{blog_title}</title>
</head>
<body>
<h3>{blog_heading}</h3>
{blog_entries}
<h5>{title}</h5>
<p>{body}</p>
{/blog_entries}
</body>
</html>
在上面的代码中你会注意到一对变量: {blog_entries} 数据…… {/blog_entries}。 像这样,在这对变量中间的数据将会被多次替换,替换的次数取决于结果集的行数。
除了要根据你的数据提供一个多维数组以外,变量对的解析代码和单个变量的解析代码相同。参考下面的例子:
$this->load->library('parser');
$data = array(
              'blog_title'   => 'My Blog Title',
              'blog_heading' => 'My Blog Heading',
              'blog_entries' => array(
                                      array('title' => 'Title 1', 'body' => 'Body 1'),
                                      array('title' => 'Title 2', 'body' => 'Body 2'),
                                      array('title' => 'Title 3', 'body' => 'Body 3'),
                                      array('title' => 'Title 4', 'body' => 'Body 4'),
                                      array('title' => 'Title 5', 'body' => 'Body 5')
                                      )
            );
$this->parser->parse('blog_template', $data);
如果你的“数据对”来自数据库的查询,那么它已经是一个二维数组,你可以轻松的使用数据库 result_array() 函数:
$query = $this->db->query("SELECT * FROM blog");
$this->load->library('parser');
$data = array(
              'blog_title'   => 'My Blog Title',
              'blog_heading' => 'My Blog Heading',
              'blog_entries' => $query->result_array()
            );
$this->parser->parse('blog_template', $data);
CI 模板解析器类的更多相关文章
- vert.x学习(四),使用模板解析器ClassLoaderTemplateResolver
		
在vert.x中使用模板解析,可以为我们带来很多方便.我这里学习了一下ClassLoaderTemplateResolver的简单使用.这次工程配置与上篇一样,不需要做任何多的配置.直接编写代码就可以 ...
 - Boost学习之语法解析器--Spirit
		
Boost.Spirit能使我们轻松地编写出一个简单脚本的语法解析器,它巧妙利用了元编程并重载了大量的C++操作符使得我们能够在C++里直接使用类似EBNF的语法构造出一个完整的语法解析器(同时也把C ...
 - DRF之频率限制、分页、解析器和渲染器
		
一.频率限制 1.频率限制是做什么的 开放平台的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用. 2.频率组件原理 DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通 ...
 - rest-framework解析器,url控制,分页,响应器,渲染器,版本控制
		
解析器 1.json解析器 发一个json格式的post请求.后台打印: request_data---> {'title': '北京折叠'} request.POST---> <Q ...
 - REST framwork之解析器
		
一 我们首先要知道解析器是什么以及他的功能: REST framework 包含许多内置的解析器类,允许接受各种媒体类型(media types)的请求.还支持自定义解析器,这使你可以灵活地设计 AP ...
 - 六、django rest_framework源码之解析器剖析
		
1 绪论 网络传输数据只能传输字符串格式的,如果是列表.字典等数据类型,需要转换之后才能使用但是我们之前的rest_framework例子都没有转换就直接可以使用了,这是因为rest_framewor ...
 - rest_framework之解析器详解 05
		
解析器就是服务端写api,对于前端用户发来的数据进行解析.解析完之后拿到自己能用数据. 本质就是对请求体中的数据进行解析. django的解析器 post请求过来之后,django 的request. ...
 - DRF频率、分页、解析器、渲染器
		
DRF的频率 频率限制是做什么的 开放平台的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用. 频率组件原理 DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通过自己定 ...
 - XML 解析之 jaxp 解析器
		
XML 的解析方式有两种方式: DOM 解析和 SAX 解析. DOM 解析: 根据 XML 的层级结构, 在内存中分配一个树形结构, 把 XML 的标签, 属性和文本都封装成对象. 优点: 可以实现 ...
 
随机推荐
- 尝试解决IIS问题一些方法
			
尝试解决IIS问题一些方法 在控制面板中安装相关功能.添加相关角色 Win下注册IIS: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_re ...
 - IIS发布问题-用户 'IIS APPPOOL\DefaultAppPool' 登录失败
			
今天新建了一个ASP.NET(Language=C#)网站,配置好数据库后编写了几行代码测试数据库的是否能正常使用. 当运行程序时,第一个页面都没有打开就出现了错误(因为我首页就访问数据库,填充一些D ...
 - C# 实现磁性窗体
			
可以实现窗体的 吸附 移动 分离 using System; using System.Drawing; using System.Collections.Generic; using Sys ...
 - 眼花缭乱的UI,蓝牙位于何方
			
我们在前面已经分析了Android启动中涉及蓝牙的各个方面,今天我们着重来看看,在蓝牙打开之前,我们能看到的蓝牙UI有哪些,这些UI又是如何实现的. 1,settings中UI的分析 首先,最常见的也 ...
 - linux杂记(五)正确关机方法(shutdown,reboot,init,halt)
			
前言:由于在linux底下,每个程序(或者说是服务)都是在背景下运行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,如果 你直接按下电源开关来关机,则可能导致其他人的数据就此中 ...
 - uva 10779 Collectors Problem 网络流
			
链接 一共有n个人, m种收藏品, 每个人拥有的收藏品的种类和个数都是不相同的. 假设2-n这些人都只和1互相交换, 比例是1:1, 并且, 2-n这些人, 只换自己现在没有的, 如果他现在有第二种, ...
 - python 数字类型
			
数值类型:整型(int)-通常被称为是整型或整数,是正或负整数,不带数点.长整型(long integers)-无限大小的整数,整数最后是一个大写或者小写的L浮点型(floadting point r ...
 - [Java]使用队列求解josephus问题
			
约瑟夫斯问题(有时也称为约瑟夫斯置换),是一个出现在计算机科学和数学中的问题.在计算机编程的算法中,类似问题又称为约瑟夫环. 有个囚犯站成一个圆圈,准备处决.首先从一个人开始,越过个人(因为第一个人已 ...
 - fiddler--手机https
			
1.访问fiddler的主讲加端口,比如我的是:http://192.168.1.103:8080 在点击fiddlerroot certificate 下载安装证书即可
 - 阿里云ECS每天一件事D7:安装tomcat8.0
			
这一D,跨越了几个月啊,人是越来越懒,集中写一些,就懒得再记录了.也是因为测试需要,搭建个jsp的服务环境,只是测试,考虑用tomcat就够了. 在Tomcat官网下载最新Core版本,下载之后,将文 ...