smarty标签变量,来源于3个部分:
1:是php中assign分配的变量
2:smarty的系统保留变量
3:从配置文件读取到的配置变量
下面具体看看他们的用法:
1:assign赋值
// 3种变量来源之assign赋值
$smarty->assign('name','李白');
$smarty->assign('poem','天生我才必有用');
2:系统保留变量,不用赋值,自动获取
// 3中变量来源之 系统保留变量,不用赋值,自动获取
$smarty->assign('id',$_GET['id']);
define('HEI','这是常量');
3:从配置文件中读取配置变量
有些数据,比如网站底部的电话信息,不想从数据库中读了,可以写到配置文件里,模板能够读出此配置文件的选项来
1:配置文件一般以.conf做后缀(如 site.conf)
2:配置文件的写法是
选项1=值1
选项2=值2
3:配置smarty的config_dir,并把配置文件放在该目录下
// 引入smarty
require('../smarty3/libs/Smarty.class.php');
$smarty = new Smarty();
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';
$smarty->config_dir = './conf';
site.conf中的变量
site = 广州
hao = xxx科技
tel = 1380013800
下面看看模板文件(html文件)中对三种赋值形式变量的使用
<body>
<pre>
$samrty,开头的标签,当成系统变量来解析
如$smarty.get.id,解析成<?php echo $_GET['id']; ?>
还有$smarty.post,$smarty.session,$smarty.cookies
注意:要是想显示一个常量,又该如何? $smarty.const.常量名
</pre>
<h2>{$name}</h2>
<p>{$poem}</p>
<p>{$id}</p>
<p>{$smarty.get.id}</p>
<p>{$smarty.const.HEI}</p>
<div>
<p>
{$smarty.config.site}
</p>
<p>
{literal}
用#好也能读配置文件的值
{#hao#}
{/literal}
</p>
<p>电话{#tel#}</p>
</div>
</body>
好了,三种变量来源差不多就是这么个情况!
注:其实smarty也能赋值一个对象
对象属性的引用:$标签->属性名
对象方法的使用:$标签->method();
但是!!!!
我们回想设计模板时的初衷,是为了什么?
就是为了分离php与html代码,让代码简洁
所以,模板中的标签,应该尽量的是,只负责变量的输出
就是负责显示数据的,不要负责太多的逻辑判断,函数调用等
所以我们不推荐在模板里调用函数和方法
require('../Smarty3/libs/Smarty.class.php');
// 实例化
$smarty = new Smarty();
// 配置
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';
class human {
public $name = '张三';
public $age = '28';
public function say() {
return '你好,世界';
}
}
$man = new human();
$smarty->assign('man',$man);
$smarty->display('01.html');
<h2>{$man->name} {$man->age}岁</h2>
<p>张三说:{$man->say()}</p>