ThinkPHP模版引擎之变量输出具体解释
ThinkPHP模版引擎之变量输出具体解释
详细分析例如以下:
我们已经知道了在Action中使用assign方法能够给模板变量赋值,赋值后怎么在模板文件里输出变量的值呢?
假设我们在Action中赋值了一个name模板变量:
$name = 'ThinkPHP';
$this->assign('name',$name);
使用内置的模板引擎输出变量,仅仅须要在模版文件使用:
{$name}
模板编译后的结果就是
<?php echo($name);?>
最后执行的时候就能够在标签位置显示ThinkPHP的输出结果,注意模板标签的{和$之间不能有不论什么的空格,否则标签无效。
普通标签默认開始标记是 {,结束标记是 },也能够通过设置TMPL_L_DELIM和TMPL_R_DELIM进行更改,比如,我们在项目配置文件里定义:
'TMPL_L_DELIM'=>'<{',
'TMPL_R_DELIM'=>'}>',
那么,上面的变量输出标签就应该改成:
<{$name}>
后面的内容我们都以默认的标签定义来说明,assign方法里面的第一个參数才是模板文件里使用的变量名称,假设改成以下的代码:
$name = 'ThinkPHP';
$this->assign('name2',$name);
再使用{$name} 输出就无效了,必须使用 {$name2}才干输出模板变量的值了.假设我们须要把一个用户数据对象赋值给模板变量:
$User = M('name');
$user = $User->find(1);
$this->assign('user',$user);
也就是说$user事实上是一个数组变量,我们能够使用以下的方式来输出相关的值:
{$user['name']}//输出用户的名称
{$user['email']} //输出用户的email地址
假设$user是一个对象而不是数组的话.
$User = M('name');
$User->find(1);
$this->assign('user',$User);
能够使用以下的方式输出相关的属性值:
{$user:name}// 输出用户的名称
{$user:email} // 输出用户的email地址
3.1版本号以后,类的属性输出方式有所调整,支持原生的PHP对象写法,所以上面的标签须要改成:
{$user->name}// 输出用户的名称
{$user->email} // 输出用户的email地址
为了方便模板定义。还能够支持点语法,比如,上面的
{$user['name']}// 输出用户的名称
{$user['email']} // 输出用户的email地址
能够改成
{$user.name}
{$user.email}
由于点语法默认的输出是数组方式,所以上面两种方式是在没有配置的情况下是等效的,我们能够通过配置TMPL_VAR_IDENTIFY參数来决定点语法的输出效果,以以下的输出为例:{$user.name}
假设TMPL_VAR_IDENTIFY设置为array,那么
{$user.name}和{$user['name']}等效,也就是输出数组变量.
假设TMPL_VAR_IDENTIFY设置为obj,那么
{$user.name}和{$user:name}等效,也就是输出对象的属性。
假设TMPL_VAR_IDENTIFY留空的话,系统会自己主动推断要输出的变量是数组还是对象,这样的方式会一定程度上影响效率,并且仅仅支持二维数组和两级对象属性。
假设是多维数组或者多层对象属性的输出,能够使用以下的定义方式:
{$user.sub.name}//使用点语法输出
或者使用
{$user['sub']['name']}// 输出三维数组的值
{$user:sub:name}// 输出对象的多级属性
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
參考来源:
ThinkPHP模版引擎之变量输出具体解释
http://www.lai18.com/content/369153.html
延伸阅读
4Thinkphp使用mongodb数据库实现多条件查询方法
9ThinkPHP中pathinfo的訪问模式、路径訪问模式及URL重写总结
10ThinkPHP基于PHPExcel导入Excel文件的方法
12ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
18ThinkPHP水印功能实现修复PNG透明水印并添加JPEG图片质量可调整
19thinkphp使用literal防止模板标签被解析的方法
21ThinkPHP中__initialize()和类的构造函数__construct()使用方法分析
24thinkphp实现发送邮件password找回功能实例
26Thinkphp搜索时首页分页和搜索页保持条件分页的方法
30ThinkPHP中url隐藏入口文件后接收alipay传值的方法
ThinkPHP模版引擎之变量输出具体解释的更多相关文章
- thinkphp 模版引擎
系统支持原生的PHP模板,而且本身内置了一个基于XML的高效的编译型模板引擎,系统默认使用的模板引擎是内置模板引擎,关于这个模板引擎的标签详细使用可以参考模版引擎部分. 内置的大理石平台检定规程模板引 ...
- Thinkphp 模版
1.显示模版 在Home/Controller/MainController.class.php中写一个方法来显示对应的模版 function text() { //变量输出 $this->as ...
- thinkphp 模板变量输出替换和赋值
一.变量输出的几个方法 <?php namespace app\index\controller; use http\Params; use think\Config; use think\Co ...
- thinkphp 变量输出
在模板中输出变量的方法很简单,例如,在控制器中我们给模板变量赋值: 大理石平台支架 $name = 'ThinkPHP'; $this->assign('name',$name); $this- ...
- GoFrame 模板引擎对变量转义输出- XSS 漏洞
GoFrame 模板引擎对变量转义输出- XSS 漏洞 环境: gf v1.14.4 go 1.11 官网说明 默认情况下,模板引擎对所有的变量输出并没有使用HTML转码处理,也就是说,如果开发者处理 ...
- T4教程1 T4模版引擎之基础入门
T4模版引擎之基础入门 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看 ...
- 黄聪:VS2010开发T4模版引擎之基础入门
原文:http://www.cnblogs.com/lzrabbit/archive/2012/07/15/2591085.html 额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又 ...
- T4模版引擎之基础入门
额,T4好陌生的名字,和NuGet一样很悲催,不为世人所熟知,却又在背后默默无闻的奉献着,直到现在我们项目组的人除了我之外,其它人还是对其豪无兴趣,基本上是连看一眼都懒得看,可怜的娃啊... T4(T ...
- Java模版引擎:jsp、freemarker、velocity区别
在java领域,表现层技术主要有三种:jsp.freemarker.velocity. jsp是大家最熟悉的技术优点:1.功能强大,可以写java代码2.支持jsp标签(jsp tag)3.支持表达式 ...
随机推荐
- Python 36 GIL全局解释器锁 、vs自定义互斥锁
一:GIL全局解释器锁介绍 在CPython中,全局解释器锁(或GIL)是一个互斥锁, 它阻止多个本机线程同时执行Python字节码.译文:之所以需要这个锁, 主要是因为CPython的内存管理不是线 ...
- go之结构体
一.关于结构体 简述 1.go 语言的切片可以存储同一类型的数据,但是结构体可以为不同项定义不同的数据类型 2.结构体是有一系列具有相同类型或不同类型的数据构成的数据集合 3.因为go 没有类似于类的 ...
- 使用Github做服务器展示前端页面
1)在github上创建自己一个项目,项目名称必须是你的github账号名.github.io 譬如 fk123456.github.io 因为我已经创建了,所以显示名字重复. 2)使用命令行的方式 ...
- ruby --Paperclip::NotIdentifiedByImageMagickError
首先,如果遇到这个问题,Paperclip::NotIdentifiedByImageMagickError,先检查下环境变量是否配置了ImagicMagick的路径. cmd下path 查看,首先加 ...
- Redis学习笔记(五)- 数据类型之set类型
Redis 的set是string类型的无序集合.set元素最大可以包含(2的32次方-1)个元素.set的是通过hash table实现的,所以添加,删除,查找的复杂度都是O(1).hash tab ...
- ie8及其以下版本兼容性问题之input file隐藏上传文件
文件上传时,默认的file标签很难看,而且每个浏览器下都有很大差距.因此我们基本都把真正的file标签给隐藏,然后创建一个标签来替代它.但是由于IE出于安全方面的考虑上传文件时必须点击file的浏览按 ...
- sqlserver 常用到的架构相关的表芝士
“SELECT COLUMN_NAME,TABLE_NAME FROM INFORMATION_SCHEMA.columns WHERE COLUMN_NAME='WareHouse_Code'” 如 ...
- asp.net 后台注册脚本
string myScript = "function ShowPanel() { $('.nav a[href=\"#" + PanelType.wenben.ToSt ...
- Js 删除前弹出确认框
<td align="center" valign="middle" class="black3"> <c:if test ...
- javaee utf-8文件的转换
package Zy; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.Fil ...