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

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

XML/HTML代码
  1. {$varname|function1|function2=arg1,arg2,### }

说明:

{ 和 $ 符号之间不能有空格 ,后面参数的空格就没有问题

###表示模板变量本身的参数位置

支持多个函数,函数之间支持空格

支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表

支持变量缓存功能,重复变量字串不多次解析

使用例子:

XML/HTML代码
  1. {$webTitle|md5|strtoupper|substr=0,3}

编译后的PHP代码就是:

PHP代码
  1. <?php echo (substr(strtoupper(md5($webTitle)),0,3)); ?>

注意函数的定义和使用顺序的对应关系,通常来说函数的第一个参数就是前面的变量或者前一个函数使用的结果,如果你的变量并不是函数的第一个参数,需要使用定位符号,例如:

XML/HTML代码
  1. {$create_time|date="y-m-d",###}

编译后的PHP是:

PHP代码
  1. <?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代码
  1. {:U('User/insert')}

编译后的PHP代码是

PHP代码
  1. <?php echo U('User/insert');?>

2、执行方法但不输出:

格式:{~function(…)}

例如,调用say_hello函数:

XML/HTML代码
  1. {~say_hello('ThinkPHP')}

编译后的PHP代码是:

PHP代码
  1. <?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)
利用这个,我们来试做加法和减法。

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


    01

    02

    03

    04

    05

    06

    07

    08

    09

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    function

    template_add(
    $a,$b){

        echo(intval($a)+intval($b));

    }

     

    function

    template_substract(
    $a,$b){

        echo(intval($a)-intval($b));

    }

  2. 在模板中使用函数:
    {:template_add($var1,$var2)}

即可显出变量var1于var2的和。

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

最重要一点,每次更改common.php文件,如果设置config里Debug_MODE =>false, 要删除Temp文件夹下的~app.php文件,因数common.php首先解析到~app.php文件里的函数。要清除这个缓存文件。

转载于:https://www.cnblogs.com/martin1009/archive/2012/07/19/2598716.html

前台html调用函数 格式化输出相关推荐

  1. thinkphp 前台html调用函数 格式化输出

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

  2. 编写一个C程序,实现以下功能:编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101。在main函数中输入整数n,调用函数,输出它的二进制

    题目要求: 编写一个C程序,实现以下功能: //编写一个函数decTobin(int n),该函数能将一个十进制数n转换成二进制数,输入13 输出 1101. //在main函数中输入整数n,调用函数 ...

  3. Python·.·.print()函数格式化输出-超详解

    Python·.·.print()函数格式化输出 print()函数格式为: print(objects, sep=' ', end='\n', file=sys.stdout) 文章目录 Pytho ...

  4. c语言习题 定义函数 areaT,功能是求梯形面积。要求在主函数中输入上底(用变量 a存储)、下底(用变量 b 存储)、和高(用变量 h 存储),在主函数中调用函数 areaT,输出梯形面积(用变量

    定义函数 areaT,功能是求梯形面积.要求在主函数中输入上底(用变量 a存储).下底(用变量 b 存储).和高(用变量 h 存储),在主函数中调用函数 areaT,输出梯形面积(用变量 s 存储)的 ...

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

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

  6. RT-thread rt_kprintf()函数格式化输出浮点数

    使用rt-thread的同学可能会发现,RT官方预留的打印功能rt_kprintf无法输出小数(不知道是不是全部版本都这样,我这里使用的是3.1.4的版本出现这种情况,使用MCU为stm32) 即使用 ...

  7. 调用函数,输出Fibonacci数列的m项至n项

    Description 定义递归函数fib(n),它的功能是返回第n项Fibonacci数,如fib(7)的返回值是13. 在主函数中,输入两个正整数m和n,调用该函数输出Fibonacci数列的m项 ...

  8. python函数格式化输出唐诗《锦瑟》_Python文本分析案例:近体诗格律分析

    作者:长行 时间:2020.05.26 Github原文:Week-03/Example-0301 在这个案例中,我们将要实现近体诗格律的分析.具体的,我们从如下角度分析近体诗的格律: 诗句数量.诗句 ...

  9. 使用fprintf()函数格式化输出至磁盘文件和是stdout

    2019独角兽企业重金招聘Python工程师标准>>> //numberfile.c -- 演示fprintf()函数的用法 #include <stdio.h> #in ...

最新文章

  1. 06- web兼容性测试
  2. Openstack-L 路由注入方式
  3. JavaScript 学习笔记3
  4. Facebook 对 Memcache 伸缩性的增强
  5. win32汇编实现拼接SQL语句
  6. Java设计模式(二) -- 单例模式
  7. matlab for and if command
  8. Linux如何修改用户名?
  9. MySQL5.5 对多核CPU的支持测试
  10. linux文件编辑命令详细整理,Linux文件编辑命令vi详细说明
  11. 舒尔补理论Schur Compliment
  12. Axure 9 编辑窗口中的负坐标空间
  13. qos 流控功能_QOS流量控制管理详解!
  14. Android-使用HttpURLConnection实现多线程下载
  15. 解决克隆RHEL7后网络无法启动问题
  16. pikachu漏洞平台靶场练习 总结 wp
  17. java包(java包和类)
  18. General Sultan UVA - 11604(建图暴力)
  19. 光敏电阻5506主要参数_常用光敏电阻的规格参数
  20. c语言如何输出字母锥子塔,GCC连接脚本学习笔记 zz

热门文章

  1. devc 无法编译循环语句_鸡生蛋还是蛋生鸡?详解第一个编译器是怎么来的~
  2. 「更高更快更稳」,看阿里巴巴如何修炼容器服务「内外功」
  3. “云”端的语雀:用 JavaScript 全栈打造商业级应用
  4. oracle 新建TNS监听,oracle for windows 监听问题之TNS-12545
  5. linux eth0 device not found,nVidia集成驱动已经安装了,但是Device not found,我的网卡怎么用呢?...
  6. python创建一个空列表alist_【Python 1-7】Python手把手教程之——详解列表List
  7. cdh用户权限_0617-使用Sentry给Solr的collection赋予Query权限后查询异常分析
  8. mkfontscale没有这个命令_那些实用的小命令
  9. linux 网卡驱动分析,LINUX_网卡驱动分析
  10. C/C++常见报错问题描述及解决方案