文章教程

20.3.4Smarty模板引擎的使用

9/17/2020 9:26:54 PM 人评论 次浏览

20.3.4 Smarty模板引擎的使用

下面通过一个实例程序介绍Smarty模板引擎在PHP程序中的使用。首先定义一个简单模板文件,命名为20-2.tpl,并保存在当前目录下的template子目录下。tpl是Smarty模板文件使用的后缀名,该模板文件如代码20-2所示。

代码20-2 一个简单的Smarty模板文件20-2.tpl


01 {*这里是Smarty模板的注释*}

02 <html>

03 <head>

04 <title>{$page_title}</title>

05 </head>

06

07 <body>

08 大家好,我是{$name}模板引擎,欢迎大家在PHP程序中使用{$name}。

09 </body>

10

11 </html>

12 {*模板文件结束*}


【代码解析】{*与*}之间的部分是模板页的注释,它在Smarty对模板进行解析时不进行任何处理,仅起说明作用。{$name}是模板变量,它是Smarty中的核心组成,用左边界符“{”与右边界符“}”包含着、以PHP变量形式给出。

接下来完成显示模板的PHP程序,如下面的代码20-3所示。

代码20-3 在PHP程序中使用Smarty模板引擎20-3.php


01 <?php

02 include("./Smarty/libs/Smarty.class.php");//包含Smarty类文件

03

04 $smarty=new Smarty();//建立Smarty类的实例$smarty

05 $smarty->template_dir="./templates";//设置模板目录

06 $smarty->compile_dir="./templates_c";//设置编译目录

07

08 $smarty->left_delimiter="{";//设定左右边界符为{},Smarty推荐使用的是<{}>

09 $smarty->right_delimiter="}";

10

11 $smarty->assign("name","Smarty");//进行模板变量替换

12 $smarty->assign("page_title","Smarty的使用");//进行模板变量替换

13

14 $smarty->display("20-2.tpl");//编译并显示位于./templates下的20-2.tpl模板

15 ?>


【代码解析】代码第2行,将Smarty类新的类文件Smarty.class.php包含到当前文件中。代码第4行生成Smarty类的实例$smarty,它代表了一个Smarty模板。代码第5、6行分别设置模板文件所在目录及模板文件编译后存放目录。代码第8、9行设定了模板变量的界定符为“{”和“}”。第11、12行将模板变量替换为实际内容,最后在代码第14行显示最终用户看到的HTML视图。代码20-3的执行结果如图20-3所示。

图 20-3 使用Smarty模板引擎输出的HTML页面

如果转到当前目录下的子目录template_c,可以看到其中有一个由Smarty模板引擎生成的PHP文件,这个文件最终由Smarty模板引擎调用,向浏览器端输出。打开这个文件,可以看到如下所示的代码。


<html>

<head>

<title><?php echo$this->_tpl_vars['page_title'];?>

</title>

</head>

<body>

大家好,我是<?php echo$this->_tpl_vars['name'];?>

模板引擎,欢迎大家在PHP程序中使用<?php echo$this->_tpl_vars['name'];?>。

</body>

</html>


从这段代码可以看到,代码20-2.tpl中的模板变量都被Smarty模板引擎换成了PHP普通的输出数据的用法,即使用echo结构输出Smarty模板引擎获取的实际变量。从这个文件的内容,读者应该看到一点Smarty模板引擎处理模板的机制。

本小节只是举了一个很简单的例子,告诉读者Smarty模板引擎的使用方法及其实现机理,有兴趣的读者还需要通过Smarty模板引擎的官方网站,获取更多的如何应用Smarty模板引擎的知识,并在较大规模的实际应用中尝试使用Smarty模板引擎。

教程类别