前台html调用函数 格式化输出
僅僅是輸出變量并不能滿足模板輸出的需要,內置模板引擎支持對模板變量使用調節器和格式化功能,其實也就是提供函數支持,并支持多個函數同時使用。用于模板標簽的函數可以是PHP內置函數或者是用戶自定義函數,和smarty不同,用于模板的函數不需要特別的定義。
模板變量的函數調用格式為:
XML/HTML代碼
說明:?
{ 和 $ 符號之間不能有空格 ,后面參數的空格就沒有問題
###表示模板變量本身的參數位置?
支持多個函數,函數之間支持空格?
支持函數屏蔽功能,在配置文件中可以配置禁止使用的函數列表?
支持變量緩存功能,重復變量字串不多次解析
使用例子:?
XML/HTML代碼
編譯后的PHP代碼就是:
PHP代碼
注意函數的定義和使用順序的對應關系,通常來說函數的第一個參數就是前面的變量或者前一個函數使用的結果,如果你的變量并不是函數的第一個參數,需要使用定位符號,例如:
XML/HTML代碼
編譯后的PHP是:?
PHP代碼
函數的使用沒有個數限制,但是可以允許配置TMPL_DENY_FUNC_LIST定義禁用函數列表,系統默認禁用了exit和echo函數,以防止破壞模板輸出,我們也可以增加額外的定義,例如:
TMPL_DENY_FUNC_LIST=>"echo,exit,halt"
多個函數之間使用半角逗號分隔即可。
并且還提供了在模板文件中直接調用函數的快捷方法,無需通過模板變量,包括兩種方式:
1、執行方法并輸出返回值:
格式:{:function(…)}?
例如,輸出U方法的返回值:
XML/HTML代碼
編譯后的PHP代碼是
PHP代碼
2、執行方法但不輸出:
格式:{~function(…)}?
例如,調用say_hello函數:
XML/HTML代碼
編譯后的PHP代碼是:
PHP代碼
?
比如我自定義函數是這樣
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)
利用這個,我們來試做加法和減法。
| 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)); } |
{: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调用函数 格式化输出的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VB.NET启动外部程序
- 下一篇: poj 1961 Period