Smarty中变量分为三类
1、PHP分配的变量
index.php
- require('./include.php'); //加载Smarty初始化
- $smarty->assign('name','chuangrain'); //php分配的变量
- $smarty->display('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}>
2、配置文件中的变量
使用配置文件中的变量可以通过两个"#"或者smarty中的保留变量$smarty.config.来调用
info.conf
- name = "chuangrain"
- age = 20
- address = "四川"
- <{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}>
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}>
运行结果:

3.5、$smarty.config.变量名
$smarty.config.变量名,可以获取配置文件中的变量的值,在 2 中已有使用
3.6、$smarty.section $smarty.foreach
用在section和foreach循环遍历中
3.7、$smarty.template
返回本模板的文件名