我们都知道smarty是用来写模板的,但是写入模板的数据可以大致的分为这么几种:
整数 小数 字符串 布尔值 数组(一维索引,一维关联数组,二维数组,二维关联数组等) 对象。
下面是我的实例代码,对每一种变量类型都有测试:
<?php
require_once './libs/Smarty.class.php';
$smarty=new Smarty();
$smarty->left_delimiter="<{";
$smarty->right_delimiter="}>";
$smarty->assign("var1","Happy");
$smarty->assign("var2",333);
$smarty->assign("var3",3.1415926);
$smarty->assign("var4",true);
//数组一般是从数据库里面取出
$arr1=array('北京','上海','天津');
$smarty->assign("var5",$arr1);
$arr2=array('city1'=>'北京','city2'=>'上海','city3'=>'天津');
$smarty->assign("var6",$arr2);
$arr3=array(array('北京','上海','天津'),array('宋江','卢俊义','张飞'));
$smarty->assign("var7",$arr3);
$arr4=array(array('city1'=>'北京','city2'=>'上海','city3'=>'天津'),array('person1'=>'宋江','person2'=>'卢俊义','person3'=>'张飞'));
$smarty->assign("var8",$arr4);
$arr5=array('emp1'=>array('city1'=>'北京','city2'=>'上海','city3'=>'天津'),'emp2'=>array('person1'=>'宋江','person2'=>'卢俊义','person3'=>'张飞'));
$smarty->assign("var9",$arr5);
class Dog{
var $name;
var $age;
var $color;
var $arr;
function __construct($name,$age,$color,$arr){
$this->name=$name;
$this->age=$age;
$this->color=$color;
$this->arr=$arr;
}
}
$dog_1=new Dog('小白',18,'yellow',$arr1);
$smarty->assign("var10",$dog_1);
$dog_2=new Dog('小黑',20,'black',$arr2);
$smarty->assign("var11",$dog_2);
echo "<pre>";
print_r($_SERVER);
echo "</pre>";
//说明该对象使用哪一个模板。
$smarty->display("test.tpl");
?>
以上smarty对象的创建和数据的分配实现,下面是其对应的模板:
<{config_load file='../config/my.conf'}>
<body bgcolor="<{#bgcolor#}>">
<h1><{#title#}></h1>
<{$var1}><hr/>
<{$var2}><hr/>
<{$var3}><hr/>
<{$var4}><hr/>
<{$var5[0]}>********<{$var5[1]}>*******<{$var5[2]}><hr/>
<{$var6.city1}>*******<{$var6.city2}>*******<{$var6.city3}><hr/>
<{$var7[0][0]}>********<{$var7[0][1]}>*******<{$var7[0][2]}>*******
<{$var7[1][0]}>********<{$var7[1][1]}>*******<{$var7[1][2]}><hr/>
<{$var8[0].city1}>********<{$var8[0].city2}>*******<{$var8[0].city3}>*******
<{$var8[1].person1}>********<{$var8[1].person2}>*******<{$var8[1].person3}><hr/>
<{$var9.emp1.city1}>**********<{$var9.emp1.city2}>**********<{$var9.emp1.city3}>********
<{$var9.emp2.person1}>*********<{$var9.emp2.person2}>*********<{$var9.emp2.person3}><hr/>
<{$var10->name}>******************<{$var10->age}>*********************<{$var10->color}><hr/>
<{$var10->arr[0]}>***************<{$var10->arr[1]}>*********************<{$var10->arr[2]}><hr/>
<{$var11->arr.city1}>*****************<{$var11->arr.city2}>***************<{$var11->arr.city3}><hr/>
<{$smarty.get.usename}><hr/>
<{$smarty.server.SERVER_NAME}>
</body>
他们的取法在模板里面都有相应的规范。
这里总结一下:
一般数据类型,如整数,小数,字符串等即直接使用就可以了。
如果是数组类型,分为这么两种:即有关联和无关联,前者要用下点号取,后者直接用数组的方式,依次类推。
而对象则是用“->”的方式进行指定。
如果是复合型的数据,要根据以上的原则便可以了。