ThinkPHP模板之变量输出、自定义函数与判断语句用法


Posted in PHP onNovember 01, 2014

本文实例讲述了ThinkPHP模板之变量输出、自定义函数与判断语句用法。主要包括变量输出、自定义函数与判断语句三种用法。分享给大家供大家参考。具体分析如下:

模板操作变量输出:

快捷输出变量

{:function(…)} //执行方法并输出返回值

{~function} //执行方法不输出

{@var} //输出Session变量

{#var} //输出Cookie变量

{&var} //输出配置参数  

{%var} //输出语言变量

{.var} //输出GET变量

{^var} //输出POST变量

{*var} //输出常量

 模版输出
//1 直接调用index操作模板

$this->display();

// 对应Myapp/Tpl/default/Index/index.html

//2 调用Index模块的test1操作模板

$this->display('test1');

//对应Myapp/Tpl/default/Index/test1.html

//2 调用Message模块的test2操作模板()

$this->display('Message:test2');

//对应Myapp/Tpl/default/Message/test2.html

//3 调用XP主题的Message模块的test2操作模板

$this->display('Xp@Message:test2');

//对应Myapp/Tpl/Xp/Message/test2.html

//4 直接指定模板文件的全名

$this->display('../Message/test3.html');

//对应Myapp/Tpl/default/Message/test3.html

使用判断语句

我们可以使用if标签来定义复杂的条件判断,例如:

<if condition="($name eq 1) OR ($name gt 100) "> value1

<elseif condition="$name eq 2" />value2

<else /> value3

</if>

在condition属性中可以支持eq等判断表达式 ,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析,所以下面的用法是错误的:
<if condition="$id < 5 "> value1

<else /> value2

</if>

必须改成:
<if condition="$id lt 5 "> value1

<else /> value2

</if>

除此之外,我们可以在condition属性里面使用php代码,例如:
<if condition="strtoupper($user['name']) neq 'THINKPHP' "> ThinkPHP

<else /> other Framework

</if>

condition属性可以支持点语法和对象语法,例如:
自动判断user变量是数组还是对象
<if condition="$user.name neq 'ThinkPHP' "> ThinkPHP

<else /> other Framework

</if>

或者知道user变量是对象
<if condition="$user:name neq 'ThinkPHP' "> ThinkPHP

<else /> other Framework

</if>

由于if标签的condition属性里面基本上使用的是php语法,尽可能使用判断标签和Switch标签会更加简洁,原则上来说,能够用switch和比较标签解决的尽量不用if标签完成。因为switch和比较标签可以使用变量调节器和系统变量。如果某些特殊的要求下面,IF标签仍然无法满足要求的话,可以使用原生php代码或者PHP标签来直接书写代码。

eq 等于(==)
neq 不等于(!=)
gt 大于(>)
egt 大于等于(>=)
lt 小于(<)
elt 小于等于(<=)
heq 恒等于(===)
nheq 不恒等于(!==)
condition 条件
 
注意
condition 属性值中,变量是需要 $ 符号的,这与其他标签不同。

使用自定义函数的方法

模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### }

使用例子:

{$webTitle|md5|strtoupper|substr=0,3} 

{$number|number_format=2} 

{$varname|function1|function2=arg1,arg2,### }

实例如下:

function Cate($cid){ 

$Cate=D('Cate'); 

$Cate=$Cate->where('id='.$cid)->find(); 

return $Cate['title']; 

}

我想在模板中调用这个函数则在模板中可以这样写
{$vo.cid|cate=###}

注意:自定义函数要放在项目应用目录/common/common.php中。 这里是关键。

说明:
{ 和 $ 符号之间不能有空格,后面参数的空格就没有问题;
###表示模板变量本身的参数位置 ;
支持多个函数,函数之间支持空格 ;
支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 ;
支持变量缓存功能,重复变量字串不多次解析。

希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
用PHP4访问Oracle815
Oct 09 PHP
linux下 C语言对 php 扩展
Dec 14 PHP
PHP企业级应用之常见缓存技术篇
Jan 27 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
php中strstr、strrchr、substr、stristr四个函数的区别总结
Sep 22 PHP
PHP strip_tags() 去字符串中的 HTML、XML 以及 PHP 标签的函数
May 22 PHP
Thinkphp框架中D方法与M方法的区别
Dec 23 PHP
PHPExcel在linux环境下导出报500错误的解决方法
Jan 26 PHP
php 判断页面或图片是否经过gzip压缩的方法
Apr 05 PHP
PHP编程快速实现数组去重的方法详解
Jul 22 PHP
Laravel创建数据库表结构的例子
Oct 09 PHP
Laravel实现批量更新多条数据
Apr 06 PHP
ThinkPHP查询语句与关联查询用法实例
Nov 01 #PHP
ThinkPHP分组下自定义标签库实例
Nov 01 #PHP
PHP根据两点间的经纬度计算距离
Oct 31 #PHP
ThinkPHP在新浪SAE平台的部署实例
Oct 31 #PHP
封装ThinkPHP的一个文件上传方法实例
Oct 31 #PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
Oct 31 #PHP
ThinkPHP控制器间实现相互调用的方法
Oct 31 #PHP
You might like
Protoss兵种对照表
2020/03/14 星际争霸
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
php计算数组不为空元素个数的方法
2014/01/27 PHP
PHP数组相关函数汇总
2015/03/24 PHP
php中 ob_start等函数截取标准输出的方法
2015/06/22 PHP
摘自织梦CMS中的图片处理类
2015/08/08 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
php开发最强大的IDE编辑的phpstorm 2020.2配置Xdebug调试的详细教程
2020/08/17 PHP
Prototype 学习 工具函数学习($w,$F方法)
2009/07/12 Javascript
读jQuery之五(取DOM元素)
2011/06/20 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
jquery offset函数应用实例
2012/11/14 Javascript
jquery利用命名空间移除绑定事件的方法
2015/03/11 Javascript
jQuery创建自定义的选择器用以选择高度大于100的超链接实例
2015/03/18 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
浅谈JavaScript中promise的使用
2017/01/11 Javascript
通俗易懂地解释JS中的闭包
2017/10/23 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
2018/05/04 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
JS实现滑动插件
2020/01/15 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
python远程登录代码
2008/04/29 Python
理解python多线程(python多线程简明教程)
2014/06/09 Python
使用批处理脚本自动生成并上传NuGet包(操作方法)
2019/11/19 Python
python连接打印机实现打印文档、图片、pdf文件等功能
2020/02/07 Python
python实现同一局域网下传输图片
2020/03/20 Python
对Python 字典元素进行删除的方法
2020/07/31 Python
10分钟入门CSS3 Animation
2018/12/25 HTML / CSS
浅谈html5标签css3的常用样式
2016/10/20 HTML / CSS
Under Armour美国官网:美国知名高端功能性运动品牌
2016/09/05 全球购物
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
餐厅总经理岗位职责
2013/12/31 职场文书
党的群众路线教育实践活动对照检查材料思想汇报
2014/09/19 职场文书
基石观后感
2015/06/12 职场文书
2019年新郎保证书3篇
2019/10/17 职场文书