仅仅是输出变量并不能满足模板输出的需要,内置模板引擎支持对模板变量使用调节器和格式化功能,其实也就是提供函数支持,并支持多个函数同时使用。用于模板标签的函数可以是PHP内置函数或者是用户自定义函数,和smarty不同,用于模板的函数不需要特别的定义。

模板变量的函数调用格式为:

XML/HTML代码

  1. {$varname|function1|function2=arg1,arg2,### }
  2.  
  3. 说明:
  4.  
  5. { $ 符号之间不能有空格 ,后面参数的空格就没有问题
  6.  
  7. ###表示模板变量本身的参数位置
  8.  
  9. 支持多个函数,函数之间支持空格
  10.  
  11. 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表
  12.  
  13. 支持变量缓存功能,重复变量字串不多次解析
  14.  
  15. 使用例子:

XML/HTML代码

  1. {$webTitle|md5|strtoupper|substr=0,3}
  2.  
  3. 编译后的PHP代码就是:
  4.  
  5. PHP代码
  6.  
  7. <?php echo (substr(strtoupper(md5($webTitle)),0,3)); ?>

注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数使用的结果,

如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:

  1. XML/HTML代码
  2.  
  3. {$create_time|date="y-m-d",###}
  4.  
  5. 编译后的PHP是:
  6.  
  7. PHP代码
  8.  
  9. <?php echo (date("y-m-d",$create_time)); ?>

函数的使用没有个数限制,但是可以允许配置TMPL_DENY_FUNC_LIST定义禁用函数列表,系统默认禁用了exit和echo函数,以防止破坏模板输出,我们也可以增加额外的定义,例如:

TMPL_DENY_FUNC_LIST=>"echo,exit,halt"

多个函数之间使用半角逗号分隔即可。

并且还提供了在模板文件中直接调用函数的快捷方法,无需通过模板变量,包括两种方式:

1、执行方法并输出返回值:

格式:{:function(…)}

例如,输出U方法的返回值:

  1. XML/HTML代码
  2.  
  3. {:U('User/insert')}
  4.  
  5. 编译后的PHP代码是
  6.  
  7. PHP代码
  8.  
  9. <?php echo U('User/insert');?>

2、执行方法但不输出:

格式:{~function(…)}

例如,调用say_hello函数:

XML/HTML代码

  1. {~say_hello('ThinkPHP')}
  2.  
  3. 编译后的PHP代码是:
  4.  
  5. PHP代码
  6.  
  7. <?php say_hello('ThinkPHP');?>
  8.  
  9. 比如我自定义函数是这样
  10. function Category($cid)
  11. {
  12.  
  13. $Category=D("Category");
  14.  
  15. $Category=$Category->where('id='.$cid)->find();
  16.  
  17. return $Category['title'];
  18.  
  19. }
  20. 我想在模板中调用这个函数则在模板中可以这样写
  21. {$vo.cid|category=###}
  22. 当然自定义函数要放在项目目录/Common/common.php

实际项目中,我们经常需要标签变量加减运算的操作。但是,在ThinkPHP中,并不支持模板变量直接运算的操作。
幸运的是,它提供了自定义函数的方法,我们可以利用自定义函数解决:
ThinkPHP模板自定义函数语法如下:
格式:{:function(…)} (参考官方帮助文档:http://thinkphp.cn/Manual/196)
利用这个,我们来试做加法和减法。

在ThinkPHP中定义函数。在项目的common文件夹下新建common.php文件(这样系统会自动加载)。定义两个函数:

  1. function template_add($a,$b){
  2. echo(intval($a)+intval($b));
  3. }
  4.  
  5. function template_substract($a,$b){
  6. echo(intval($a)-intval($b));
  7. }

在模板中使用函数:
{:template_add($var1,$var2)}
即可显出变量var1于var2的和。

把自定义的函数放在Common目录下common.php里面如果调用不出来,把文件名改成common.class.php,定义import(@.common.common)

thinkphp 前台html调用函数 格式化输出的更多相关文章

  1. c++中利用localtime_s函数格式化输出当地日期与时间

    Visual C++ 6.0开发环境中显示当地日期与时间主要通过localtime()函数来实现,该函数的原型在time.h头文件中,其语法格式如下: struct tm *localtime(xon ...

  2. 2、python的print函数格式化输出

    1.格式化输出浮点数(float) pi = 3.141592653 print('%10.3f' % pi)  #字段宽10,精度3 ,结果 print('%010.3f' % pi)  #用0填充 ...

  3. Problem D: 调用函数,输出Fibonacci数列的m项至n项

    #include<stdio.h> int fib(int n)//定义FIbonacci函数 { int s,i; ||n==) { s=; } else { int s1,s2; s1 ...

  4. Problem B: 调用函数,输出100到200之间的所有素数

    #include <stdio.h> int isPrime(unsigned int n)//定义素数函数 { int i; || n == ) ; ; i * i <= n; i ...

  5. time() 在thinkphp 3.2.3 模板格式化输出

    {$ltime|date="Y-m-d",###}

  6. 自学Python1.8-python input/print用法 格式化输出

    自学Python之路 自学Python1.8-python input/print用法 格式化输出 1.input函数 Python3.x 中 input() 函数接受一个标准输入数据,返回为 str ...

  7. C printf格式化输出

    转载:https://blog.csdn.net/wucz122140729/article/details/98434702 格式化输出       格式化输出的函数有printf.sprintf和 ...

  8. thinkphp 5 前台格式化输出日期

    thinkphp格式化输出 {$time|strtotime|date="Y年m月d日",###}   $time 是日期字符串,一般后台的时间是"Y-m-d h:i:s ...

  9. thinkphp模版调用函数方法

    原文:thinkphp模版调用函数方法 {变量|函数1|函数2|函数3=参数1,参数2,参数3,###} ###为第4个参数,代表变量替换为第4个参数 举例: {$username|substr=0, ...

随机推荐

  1. 【转】Oracle之物化视图

    原文地址:http://www.cnblogs.com/Ronger/archive/2012/03/28/2420962.html 物化视图是一种特殊的物理表,“物化”(Materialized)视 ...

  2. 【转】高斯消元模板 by kuangbin

    写的很好,注释很详细,很全面. 原blog地址:http://www.cnblogs.com/kuangbin/archive/2012/09/01/2667044.html #include< ...

  3. FastDFS在.Net平台上的使用

    上一篇,了解了FastDFS是什么东东,一般稍微大一的网站都会做文件分离存储,FastDFS这轻型的分布式文件存储方式,非常有用. 此图片截取博友(张占岭)的勿喷 下面我们就了解一下,FastDFS在 ...

  4. CRUD之delete操作

    在公司的项目中delete之后的操作有两种处理方式 1.后台删除成功之后前台页面刷新 2.后台删除成功之后页面不刷新,但是数据所在的那个div会刷新一次 3.后台删除,页面上做了一个删除,删除的td没 ...

  5. codevs1500 后缀排序

    题目描述 Description 天凯是MIT的新生.Prof. HandsomeG给了他一个长度为n的由小写字母构成的字符串,要求他把该字符串的n个后缀(suffix)从小到大排序. 何谓后缀?假设 ...

  6. hadoop单节点windows 7 环境搭建

    前言 Windows下运行,通常有两种方式:一种是用VM方式安装一个,这样基本可以实现全Linux环境的Hadoop运行:另一种是通过Cygwin模拟Linux环境.后者的好处是使用比较方便,安装过程 ...

  7. MySql批处理的小窍门:排行榜类数据生成

    MySql批处理的小窍门:排行榜类数据生成 最近在做新版本的开发,其中涉及到排行榜的批量预生成,在此分享给大家. 关键点 名次的计算(不考虑用游标) 单榜单查询 对于排行榜这种类型的数据,当只查一个排 ...

  8. DataTable列上多值运算

    1.从网上找了个中缀算法(也不知道什么前缀后缀,抱歉),可以对字符串表达式进行运算 2.有些时候还是会用到ASCII码表的 char c = expression[k];//expression为一字 ...

  9. Windows下绘制数学函数图像的方法

    一.安装相关软件 在Windows中安装VirtualBox: 在VirtualBox中安装Ubuntu Server: 在Ubuntu Server中安装cifs-utils:sudo apt-ge ...

  10. 裴波那契数列 JavaScript 尾递归实现

    一般递归实现 : //经典递归 function fibonacci(n) { return (function(n) { ) ; ); })(n); } 或者: function fibonacci ...