入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

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

创建时间:2012-04-26 投稿人: 浏览次数:4566

1、capture

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

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

2、config_load

从配置文件读取变量

<{*
	必选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,所以不能被加载和使用*}>
# 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

$arr = array(
	array(
		"id" => "001",
		"name" => "zhao",
	),
	array(
		"id" => "002",
		"name" => "qian",
	),
);

$smarty->assign("arr",$arr);


$smarty->display("input.html");
<{*
	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加载模板文件

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

5、include_php 加载php文件

<{include_php file="include_php.php" assign="user"}><{*file必选,文件位置,assign可选,存放包含文件的内容*}>
<{$user}>
include_php.php

	$arr = array(
		"id" => "001",
		"name" => "zhao",
	);

	print_r($arr);
运行结果:Array ( [id] => 001 [name] => zhao )

6、insert插入函数

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

$smarty->display("new.html");

function insert_getTitle($arr = null){    //函数名为"insert_"加上insert中name相同的函数名
	print_r($arr);    //函数体
}
new.html

<{insert name="getTitle" assign="info" title="this is a demo"}>
//调用"insert_"加name的值函数
//调用php程序中的insert_getTitle函数,并传递参数
//如果php程序中不存在,会去查找扩展中的insert.getTitle.php文件中smarty_insert_getTitle函数
运行结果:Array ( [name] => getTitle [assign] => info [title] => this is a demo )
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。