在文章开始前,我们先简单了解一下为什么要学习smarty?
我们都知道smarty 的应用场景是在本页面解决php与html代码混杂的问题,解决了前段和php程序员的分工,方便以后前段的维修等问题。
为什么还要学习smarty模板?首先现在模板用的非常广泛,工作中,每个项目大多数都用到了框架,每个框架大部分都有自身的应用模板,比如ThinkPHP有自己写的模板think,因为模板原理都相似,所以学习smarty以后,我们在项目开发过程中,再用到框架模板时就不至于那么陌生,况且你又多了种选择(用框架自身模板 或者 smarty模板);其次,就是我们找工作需要;最后,个人追求——体会模板思想,争取自己能写模板。
好,我们回归正题,下面讲讲怎样引用smarty模板!
1:首先,你得有smarty,去官网下载你需要的smarty(下载地址),然后解压到文件夹中
2:引入并实例化smarty,如下:(相对地址,把Smarty.class.php引入到你的php页面上来)
// 引入smarty
require('../smarty3/libs/Smarty.class.php');
// 实例化
$smarty = new Smarty()
3:配置:给smarty指定模板文件和存放编辑完后文件的存放文件夹路径,如下:(前提是两个文件夹都已存在,不存在则创建)
// 配置
$smarty->template_dir = './temp';
$smarty->compile_dir = './comp';
(以上smarty的配置比较麻烦,我们可以新建一个mysmarty.php文件,在里面写一个MySmarty类,用对应继承来统一完成smarty的配置。值得注意的是,在MySmarty里,不能通过直接重写template_dir 和 compile_dir属性来实现配置,因为这2个属性在父类里是私有的,无法重写(即被父类封装了),但可以利用开发的接口,setTemplateDir()和setCompilteDir()来实现。然后在实例化smarty前引进mysmarty.php文件,然后直接实例化MySmarty类就可以了,具体代码如下:
/*
mysmarty.php文件
*/
class MySmarty extends Smarty {
public function __construct() {
parent::__construct();
$this->setTemplateDir('./temp');
$this->setCompileDir('./comp');
}
}
require('../Smarty3/libs/Smarty.class.php');
require('./mysmarty.php');
// 实例化
$smarty = new MySmarty();
)
4:赋值:给标签附上需要的值,模板文件上需要的值直接从已赋值的标签中获取
$title = 'smarty简介';
$content = '赋值操作相关流程';
// 赋值
$smarty->assign('title',$title);
$smarty->assign('content',$content);
// 显示在指定模板
$smarty->display('news.html');
5:模板使用:
{$title}
{$content}
注意:smarty可以标签赋字符串,数字等值,也可以赋给标签一个数组
在模板里解析数组时,用{$标签.key},或者{$标签[index]}
当键为字符串时,即关联数组,只能用$标签.key
当键为数字时,即索引数组时,用$标签[index],或$标签.key
不想记得话,就都使用$标签.key就可以了
// 从数据库取出会员信息,往往是数组形式
$user = array('name'=>'刘备','age'=>'28','weapon'=>'双剑');
$smarty->assign('name',$user['name']);
$smarty->assign('age',$user['age']);
$smarty->assign('weapon',$user['weapon']);
$zf = array('name'=>'张飞','age'=>'25','weapon'=>'丈八蛇矛');
$smarty->assign('zf',$zf);
$gy = array(0=>'关羽',1=>'25','weapon'=>'青龙偃月刀');
$smarty->assign('gy',$gy);
$smarty->display('liubei.html');
模板文件:
姓名: {$name}
年龄: {$age}
兵器: {$weapon}
姓名: {$zf.name}
年龄: {$zf.age}
兵器: {$zf.weapon}
姓名: {$gy[0]}
年龄: {$gy.1}
兵器: {$gy.weapon}
OK,以上就是引用smarty模板的相关流程,over!