thinkphp 前台html调用函数 格式化输出
仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。用于模板标签的函数可以是PHP内置函数或者是用户自定义函数,和smarty不同,用于模板的函数不需要特别的定义。
模板变量的函数调用格式为:
XML/HTML代码
{$varname|function1|function2=arg1,arg2,### }
说明:
{ 和 $ 符号之间不能有空格 ,后面参数的空格就没有问题
###表示模板变量本身的参数位置
支持多个函数,函数之间支持空格
支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表
支持变量缓存功能,重复变量字串不多次解析
使用例子:
XML/HTML代码
{$webTitle|md5|strtoupper|substr=0,3}
编译后的PHP代码就是:
PHP代码
<?php echo (substr(strtoupper(md5($webTitle)),0,3)); ?>
注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数使用的结果,
如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:
XML/HTML代码
{$create_time|date="y-m-d",###}
编译后的PHP是:
PHP代码
<?php echo (date("y-m-d",$create_time)); ?>
函数的使用没有个数限制,但是可以允许配置TMPL_DENY_FUNC_LIST定义禁用函数列表,系统默认禁用了exit和echo函数,以防止破坏模板输出,我们也可以增加额外的定义,例如:
TMPL_DENY_FUNC_LIST=>"echo,exit,halt"
多个函数之间使用半角逗号分隔即可。
并且还提供了在模板文件中直接调用函数的快捷方法,无需通过模板变量,包括两种方式:
1、执行方法并输出返回值:
格式:{:function(…)}
例如,输出U方法的返回值:
XML/HTML代码
{:U('User/insert')}
编译后的PHP代码是
PHP代码
<?php echo U('User/insert');?>
2、执行方法但不输出:
格式:{~function(…)}
例如,调用say_hello函数:
XML/HTML代码
{~say_hello('ThinkPHP')}
编译后的PHP代码是:
PHP代码
<?php say_hello('ThinkPHP');?>
比如我自定义函数是这样
function Category($cid)
{
$Category=D("Category");
$Category=$Category->where('id='.$cid)->find();
return $Category['title'];
}
我想在模板中调用这个函数则在模板中可以这样写
{$vo.cid|category=###}
当然自定义函数要放在项目目录/Common/common.php中
实际项目中,我们经常需要标签变量加减运算的操作。但是,在ThinkPHP中,并不支持模板变量直接运算的操作。
幸运的是,它提供了自定义函数的方法,我们可以利用自定义函数解决:
ThinkPHP模板自定义函数语法如下:
格式:{:function(…)} (参考官方帮助文档:http://thinkphp.cn/Manual/196)
利用这个,我们来试做加法和减法。
在ThinkPHP中定义函数。在项目的common文件夹下新建common.php文件(这样系统会自动加载)。定义两个函数:
function template_add($a,$b){
echo(intval($a)+intval($b));
}
function template_substract($a,$b){
echo(intval($a)-intval($b));
}
在模板中使用函数:
{:template_add($var1,$var2)}
即可显出变量var1于var2的和。
把自定义的函数放在Common目录下common.php里面如果调用不出来,把文件名改成common.class.php,定义import(@.common.common)
thinkphp 前台html调用函数 格式化输出的更多相关文章
- c++中利用localtime_s函数格式化输出当地日期与时间
Visual C++ 6.0开发环境中显示当地日期与时间主要通过localtime()函数来实现,该函数的原型在time.h头文件中,其语法格式如下: struct tm *localtime(xon ...
- 2、python的print函数格式化输出
1.格式化输出浮点数(float) pi = 3.141592653 print('%10.3f' % pi) #字段宽10,精度3 ,结果 print('%010.3f' % pi) #用0填充 ...
- Problem D: 调用函数,输出Fibonacci数列的m项至n项
#include<stdio.h> int fib(int n)//定义FIbonacci函数 { int s,i; ||n==) { s=; } else { int s1,s2; s1 ...
- Problem B: 调用函数,输出100到200之间的所有素数
#include <stdio.h> int isPrime(unsigned int n)//定义素数函数 { int i; || n == ) ; ; i * i <= n; i ...
- time() 在thinkphp 3.2.3 模板格式化输出
{$ltime|date="Y-m-d",###}
- 自学Python1.8-python input/print用法 格式化输出
自学Python之路 自学Python1.8-python input/print用法 格式化输出 1.input函数 Python3.x 中 input() 函数接受一个标准输入数据,返回为 str ...
- C printf格式化输出
转载:https://blog.csdn.net/wucz122140729/article/details/98434702 格式化输出 格式化输出的函数有printf.sprintf和 ...
- thinkphp 5 前台格式化输出日期
thinkphp格式化输出 {$time|strtotime|date="Y年m月d日",###} $time 是日期字符串,一般后台的时间是"Y-m-d h:i:s ...
- thinkphp模版调用函数方法
原文:thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0, ...
随机推荐
- ncdu 磁盘目录查看工具
我平时都是直接yum -y install ncdu,但是今天失败了. 所以: 安装EPEL源 CentOS/RHEL 5 : rpm -Uvh https://dl.fedoraproject.or ...
- 【BZOJ 3545】【ONTAK 2010】Peaks & 【BZOJ 3551】【ONTAK 2010】Peaks加强版 Kruskal重构树
sunshine的A题我竟然调了一周!!! 把循环dfs改成一个dfs就可以,,,我也不知道为什么这样就不会RE,但它却是A了,,, 这周我一直在调这个题,总结一下智障错误: 1.倍增的范围设成了n而 ...
- Nginx简单实现网站的负载均衡
在大型网站搭建时,都会考虑如果用户量每日不断增加,大量的并发访问,会不会给网站.数据库带来崩盘的灾难.今天我们就讨论一下,现实中如何解决这些问题的一套最为容易实现的方案. 控制并发,大家都会首先考虑的 ...
- artDialog 文档
artDialog —— 经典.优雅的网页对话框控件. 支持普通与 12 方向气泡状对话框 完善的焦点处理,自动焦点附加与回退 支持 ARIA 标准 面向未来:基于 HTML5 Dialog 的 AP ...
- CSS中font-style的斜体属性Italic oblique的区别
要搞清楚这个问题,首先要明白字体是怎么回事.一种字体有粗体.斜体.下划线.删除线等诸多属性.但是并不是所有字体都做了这些,一些不常用的字体,或许就只有个正常体,如果你用Italic,就没有效果了~这时 ...
- POJ3422 Kaka's Matrix Travels
描述 On an N × N chessboard with a non-negative number in each grid, Kaka starts his matrix travels wi ...
- Longest Increasing Common Subsequence (LICS)
最长上升公共子序列(Longest Increasing Common Subsequence,LICS)也是经典DP问题,是LCS与LIS的混合. Problem 求数列 a[1..n], b[1. ...
- 深入浅出Redis03 使用Redis数据库(hashes类型)
一 hashes类型及操作 Redis hash是一个string类型的field和value的映射表.它的添加,删除操作都是0(1)(平均).hash特别适合用于存储对象,相较于对将对象的每个字段存 ...
- redis哨兵配置主从
redis哨兵的启动和redis实例的启动没有关系.所以可以在任何机器上启动redis哨兵.至少要保证有两个哨兵在运行,要不然宕机后哨兵会找不到主节点. 配置步骤: 1.在redis的配置文件中添加鉴 ...
- 锋利的jQuery-7--$.extend()
$.extend()主要有两个功能: 1.扩展jQuery对象 jQuery.extend({ min: function(a, b) { return a < b ? a : b; }, }) ...