欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/6/15 编程问答 40 豆豆
生活随笔 收集整理的这篇文章主要介绍了 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){    //函数名为"insert_"加上insert中name相同的函数名  
  •     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的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。