Smarty中变量分为三类
1、PHP分配的变量
index.php
require('./include.php'); //加载Smarty初始化
$smarty->assign('name','chuangrain'); //php分配的变量
$smarty->display('index.html'); //显示index.html
index.html
<{if $name == 'chuangrain'}><{* Smarty中的函数、属性、注释*}>
hello,<{$name}>!
<{else}>
hello,world!
<{/if}>
如果是分配的数组和对象,也可以在smarty中访问
例:数组
$arr1 = array('赵','钱','孙',array('杨','孔'));
$arr2 = array(
'zhou' => '周',
'zhang' => '张',
'wang' => '王',
'li' => array(
'chen' => '陈',
'xiang' => '向',
),
);
$smarty->assign('arr1',$arr1);
$smarty->assign('arr2',$arr2);
<{$arr1.0}>
<{$arr1[1]}>
<{$arr1.2}>
<{$arr1.3.0}>
<{$arr1.3[1]}>
<br>
<{$arr2.zhou}>
<{$arr2.zhang}>
<{$arr2.wang}>
<{$arr2.li.chen}>
<{$arr2.li.xiang}>
运行结果:
例:对象
class pic {
public $height = '300px';
public $width = '200px';
}
$p = new pic();
$smarty->assign('p',$p);
<{$p->height}>
<{$p->width}>
运行结果:300px 200px
2、配置文件中的变量
使用配置文件中的变量可以通过两个"#"或者smarty中的保留变量$smarty.config.来调用
info.conf
name = "chuangrain"
age = 20
address = "四川"
html
<{config_load file="info.conf"}><{* 加载配置文件中的info.conf *}>
name:<{#name#}><br><{* 不能将#name#写为"#name#",否则会当作字符串处理 *}>
age:<{"`$smarty.config.age`"}><br>
address:<{#address#}><br>
运行结果:
3、smarty保留的变量
3.1、request变量
$smarty.get.变量名,可以获取url中变量的值(用得比较多)
$smarty.post.var $smarty.cookies.var $smarty.server.var $smarty.env.var $smarty.session.var $smarty.request.var
3.2、$smarty.now当前时间
<{$smarty.now}><{*返回当前时间的时间戳*}><br>
<{$smarty.now|date_format:"%Y-%m-%d %H:%M:%S"}><{*格式化输出当前时间*}><br>
运行结果:
3.3、$smarty.const.常量名
$smarty.const.常量名直接调用PHP中的常量名,不需要assign
define('CONST_STR','chuang');
<{$smarty.const.CONST_STR}>
运行结果:chuang
3.4、$smarty.capture
1.html
<a href="#">aaaaaaaaaaaaaaaaaa</a>
<{capture name=str}>
<{include file="1.html"}>
<{/capture}>
<{if $smarty.capture.str}>
<center><h1><{$smarty.capture.str}></h1><center>
<{/if}>
<{capture}><{/capture}>之间的内容会放到一个变量中去,name=“变量名”,默认为default
运行结果:
3.5、$smarty.config.变量名
$smarty.config.变量名,可以获取配置文件中的变量的值,在 2 中已有使用
3.6、$smarty.section $smarty.foreach
用在section和foreach循环遍历中
3.7、$smarty.template
返回本模板的文件名