Smarty中的内建函数(一)config_load、foreach

1、capture

将模板输出的数据存放到一个变量里,不能嵌套,<{capture name="变量名"}><{/capture}>之间的内容

通过<{$smarty.capture.变量名}>来访问

2、config_load

从配置文件读取变量

[html]  view plain  copy
 print ?
  1. <{*  
  2.     必选file="指定文件"  
  3.     可选section="配置文件中的区域",即配置文件中的“[]”  
  4.     可选scope="local/parent/global"  
  5.         scope默认为local,即作用域为本模板  
  6.         parent作用域为本模板以及调用本模板的父模板  
  7.         global作用域为所有模板  
  8.     可选global="true/false",是否全局可见,与scope="parent"相同  
  9.         如果指定了global的同时又指定了scope,模板会忽略global,则以scope为准  
  10. *}>  
  11. <{assign var="name" value="chuacom"}>  
  12. <{$name}><br><br>  
  13.   
  14. <{config_load file="input.conf" section="UserEmail"}>  
  15. name:<{#name#}><br><{*如果在本模板中已经存在此变量名,则会覆盖原有的变量值*}>  
  16. email:<{#email#}><br><br>  
  17.   
  18. <{config_load file="input.conf" section="UserID"}>  
  19. name:<{#name#}><br>  
  20. id:<{#id#}><br><{*UserID区域在配置文件中为hidden,所以不能被加载和使用*}>  
[plain]  view plain  copy
 print ?
  1. # global 全局变量,在加载这个配置文件的时候,全局变量就会被加载,如果和局部变量同名,会优先使用局部变量  
  2. name = "chuangrain"  
  3. age = 20  
  4. address = "四川"  
  5.   
  6. #域 ,用 “[ ]” 申明  
  7. [UserEmail]  
  8. email = "chuang@admin.com"  
  9.   
  10. #隐藏部分 "[. ]" 申明,在模板中无法使用这部分的变量  
  11. [.UserID]  
  12. id = '1111111111111111111'  
结果:

chuacom


name:chuangrain

email:chuang@admin.com


name:chuangrain

id:

3、foreach

[php]  view plain  copy
 print ?
  1. $arr = array(  
  2.     array(  
  3.         'id' => '001',  
  4.         'name' => 'zhao',  
  5.     ),  
  6.     array(  
  7.         'id' => '002',  
  8.         'name' => 'qian',  
  9.     ),  
  10. );  
  11.   
  12. $smarty->assign('arr',$arr);  
  13.   
  14.   
  15. $smarty->display('input.html');  
[html]  view plain  copy
 print ?
  1. <{*  
  2.     from,必选,指定遍历的数组  
  3.     item,必选,当前元素的变量名  
  4.     key,可选,当前处理元素的键名  
  5.     name,可选,循环的名称  
  6.   
  7.     foreachelse 在from变量没有值或不存在的时候执行  
  8. *}>  
  9. <{foreach from=$arr item=arr1}>  
  10.     id:<{$arr1.id}>  
  11.     name:<{$arr1.name}><br>  
  12. <{foreachelse}>  
  13.     none  
  14. <{/foreach}>  
  15.   
  16. <br>  
  17.   
  18. <{foreach from=$arr item=arr1 key=k}>  
  19.     <{$k}>:<{$arr1.id}>  
  20.     <{$k}>:<{$arr1.name}><br>  
  21. <{foreachelse}><{*如果$arr不存在或为空null时执行*}>  
  22.     none  
  23. <{/foreach}>  
  24.   
  25. <br>  
  26.   
  27. <{foreach from=$arr item=arr1}>  
  28.     <{foreach from=$arr1 item=new_arr key=k}>  
  29.         <{$k}>:<{$new_arr}>  
  30.     <{/foreach}>  
  31.     <br>  
  32. <{/foreach}>  
运行结果:

4、include加载模板文件

[html]  view plain  copy
 print ?
  1. <{*  
  2.     file,必选,加载文件的位置  
  3.     assign,可选,把模板文件放在这个变量中,暂时不用输出被包含的文件  
  4.     var...,可选,多选,变量名=值,将变量传递给被包含的模板,在被包含的模板中可以使用该变量  
  5. *}>  
  6. <{include file="new.html" assign="article" title="SUSE" content="this is a test"}>  
  7. <{$article}><{*此时才将包含的模板文件显示出来*}>  
new.html
[html]  view plain  copy
 print ?
  1. articleTitle:<{$title}><br>  
  2. articleContent:<{$content}>  
运行结果:

5、include_php 加载PHP文件

[html]  view plain  copy
 print ?
  1. <{include_php file="include_php.php" assign="user"}><{*file必选,文件位置,assign可选,存放包含文件的内容*}>  
  2. <{$user}>  
include_php.php

[php]  view plain  copy
 print ?
  1. $arr = array(  
  2.     'id' => '001',  
  3.     'name' => 'zhao',  
  4. );  
  5.   
  6. print_r($arr);  
运行结果: Array ( [id] => 001 [name] => zhao )

6、insert插入函数

插入一个同名的函数,不会缓存

[php]  view plain  copy
 print ?
  1. <span style="font-family:Simsun;font-size:16px;">$smarty->display('new.html');  
  2.   
  3. function insert_getTitle($arr = null){    //函数名为"insert_"加上insert中name相同的函数名  
  4.     print_r($arr);    //函数体  
  5. }</span>  
new.html

[html]  view plain  copy
 print ?
  1. <span style="font-family:Simsun;font-size:16px;"><{insert name="getTitle" assign="info" title="this is a demo"}>  
  2. //调用"insert_"加name的值函数  
  3. //调用php程序中的insert_getTitle函数,并传递参数  
  4. //如果php程序中不存在,会去查找扩展中的insert.getTitle.php文件中smarty_insert_getTitle函数</span>  
运行结果:Array ( [name] => getTitle [assign] => info [title] => this is a demo )
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值