生活随笔
收集整理的這篇文章主要介紹了
Smarty中的内建函数(一)config_load、foreach
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1、capture
將模板輸出的數據存放到一個變量里,不能嵌套,<{capture name="變量名"}><{/capture}>之間的內容
通過<{$smarty.capture.變量名}>來訪問
2、config_load
從配置文件讀取變量
[html]?view plaincopy print?
<{*?? ????必選file="指定文件"?? ????可選section="配置文件中的區域",即配置文件中的“[]”?? ????可選scope="local/parent/global"?? ????????scope默認為local,即作用域為本模板?? ????????parent作用域為本模板以及調用本模板的父模板?? ????????global作用域為所有模板?? ????可選global="true/false",是否全局可見,與scope="parent"相同?? ????????如果指定了global的同時又指定了scope,模板會忽略global,則以scope為準?? *}>?? <{assign?var="name"?value="chuacom"}>?? <{$name}><br><br>?? ?? <{config_load?file="input.conf"?section="UserEmail"}>?? name:<{#name#}><br><{*如果在本模板中已經存在此變量名,則會覆蓋原有的變量值*}>?? email:<{#email#}><br><br>?? ?? <{config_load?file="input.conf"?section="UserID"}>?? name:<{#name#}><br>?? id:<{#id#}><br><{*UserID區域在配置文件中為hidden,所以不能被加載和使用*}>??
[plain]?view plaincopy print?
#?global?全局變量,在加載這個配置文件的時候,全局變量就會被加載,如果和局部變量同名,會優先使用局部變量?? name?=?"chuangrain"?? age?=?20?? address?=?"四川"?? ?? #域?,用?“[?]”?申明?? [UserEmail]?? email?=?"chuang@admin.com"?? ?? #隱藏部分?"[.?]"?申明,在模板中無法使用這部分的變量?? [.UserID]?? id?=?'1111111111111111111'??
結果:
chuacom
name:chuangrain
email:chuang@admin.com
name:chuangrain
id:
3、foreach
[php]?view plaincopy print?
$arr?=?array(?? ????array(?? ????????'id'?=>?'001',?? ????????'name'?=>?'zhao',?? ????),?? ????array(?? ????????'id'?=>?'002',?? ????????'name'?=>?'qian',?? ????),?? );?? ?? $smarty->assign('arr',$arr);?? ?? ?? $smarty->display('input.html');??
[html]?view plaincopy print?
<{*?? ????from,必選,指定遍歷的數組?? ????item,必選,當前元素的變量名?? ????key,可選,當前處理元素的鍵名?? ????name,可選,循環的名稱?? ?? ????foreachelse?在from變量沒有值或不存在的時候執行?? *}>?? <{foreach?from=$arr?item=arr1}>?? ????id:<{$arr1.id}>?? ????name:<{$arr1.name}><br>?? <{foreachelse}>?? ????none?? <{/foreach}>?? ?? <br>?? ?? <{foreach?from=$arr?item=arr1?key=k}>?? ????<{$k}>:<{$arr1.id}>?? ????<{$k}>:<{$arr1.name}><br>?? <{foreachelse}><{*如果$arr不存在或為空null時執行*}>?? ????none?? <{/foreach}>?? ?? <br>?? ?? <{foreach?from=$arr?item=arr1}>?? ????<{foreach?from=$arr1?item=new_arr?key=k}>?? ????????<{$k}>:<{$new_arr}>?? ????<{/foreach}>?? ????<br>?? <{/foreach}>??
運行結果:
4、include加載模板文件
[html]?view plaincopy print?
<{*?? ????file,必選,加載文件的位置?? ????assign,可選,把模板文件放在這個變量中,暫時不用輸出被包含的文件?? ????var...,可選,多選,變量名=值,將變量傳遞給被包含的模板,在被包含的模板中可以使用該變量?? *}>?? <{include?file="new.html"?assign="article"?title="SUSE"?content="this?is?a?test"}>?? <{$article}><{*此時才將包含的模板文件顯示出來*}>??
new.html
[html]?view plaincopy print?
articleTitle:<{$title}><br>?? articleContent:<{$content}>??
運行結果:
5、include_php 加載PHP文件
[html]?view plaincopy print?
<{include_php?file="include_php.php"?assign="user"}><{*file必選,文件位置,assign可選,存放包含文件的內容*}>?? <{$user}>??
include_php.php
[php]?view plaincopy print?
$arr?=?array(?? ????'id'?=>?'001',?? ????'name'?=>?'zhao',?? );?? ?? print_r($arr);??
運行結果:
Array ( [id] => 001 [name] => zhao )
6、insert插入函數
插入一個同名的函數,不會緩存
[php]?view plaincopy print?
<span?style="font-family:Simsun;font-size:16px;">$smarty->display('new.html');?? ?? function?insert_getTitle($arr?=?null){?????? ????print_r($arr);?????? }</span>??
new.html
[html]?view plaincopy print?
<span?style="font-family:Simsun;font-size:16px;"><{insert?name="getTitle"?assign="info"?title="this?is?a?demo"}>?? //調用"insert_"加name的值函數?? //調用php程序中的insert_getTitle函數,并傳遞參數?? //如果php程序中不存在,會去查找擴展中的insert.getTitle.php文件中smarty_insert_getTitle函數</span>??
運行結果:Array ( [name] => getTitle [assign] => info [title] => this is a demo )
總結
以上是生活随笔為你收集整理的Smarty中的内建函数(一)config_load、foreach的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。