Smarty在应用程序逻辑层的使用步骤

旧街凉风 提交于 2020-04-07 07:14:27

第一步:加载Smarty模板引擎,例如:require("Smarty.class.php");。

第二步:建立Smarty对象,例如:$smarty=new Smarty();。

第三步:修改Smarty的默认行为,例如:开启缓存机制、修改模板默认存放目录等。

第四步:将程序中动态获取的变量,通过Smarty对象中的assign()方法置入模板里。

第五步:利用Smarty对象中的display()方法将模板内容输出。

在这五个步骤中,可以将前三个步骤定义在一个公共文件中,像前面介绍过的用来初始化Smarty对象的文件main.inc.php。因为前三步是 Smarty在整个PHP程序中应用的核心,不论是常数定义、外部程序加载、共享变量建立等,都是从这里开始的。所以我们通常都是先将前三个步骤做好放入 一个公共文件中,之后每个PHP脚本中只要将这个文件包含进来就可以了,因此在程序流程规划期间,必须好好构思这个公用文件中设置的内容。后面的两个步骤 是通过访问Smarty对象中的方法完成的,有必要正式地介绍一下assign()和display()两个方法。

在PHP脚本中调用该方法可以为Smarty模板文件中的变量赋值。它的使用比较容易,原型如下所示:

void assign (string varname, mixed var)         
//Smarty对象中的方法,用来赋值到模板中 

通过调用Smarty对象中的assign()方法,可以将任何PHP所支持的类型数据赋值给模板中的变量,包含数组和对象类型。使用的方式有两种,可以指定一对"名称/数值"或指定包含"名称/数值"的联合数组。如下所示:

 //指定一对"名称/数值"的使用方式  

$smarty->assign("name","Fred");               
//将字符串"Fred"赋给模板中的变量{$name}  

$smarty->assign("address",$address);           
//将变量$address的值赋给模板中的变量{$address}  

//指定包含"名称/数值"的联合数组的使用方式  

$smarty->assign(array("city" => "Lincoln","state" => 
"Nebraska"));          //这种方式很少使用 

2.display()方法

基于Smarty的脚本中必须用到这个方法,而且在一个脚本中只能使用一次,因为它负责获取和显示由Smarty引擎引用的模板。该方法的原型如下所示:

Void display (string template [, string cache_id [, string compile_id]])       

//用来获取和显示Smarty模板 

第一个参数template是必选的,需要指定一个合法的模板资源的类型和路径。还可以通过第二个可选参数cache_id指定一个缓存标识符的名 称,第三个可选参数compile_id在维护一个页面的多个缓存时使用,这两个可选参数将在本章的16.8节中讨论。在下面的示例中使用多种方式指定一 个合法的模板资源,如下所示:

//获取和显示由Smarty对象中的$template_dir属性所指定目录下的模板文件index.tpl  $smarty->display("index.tpl");           

//获取和显示由Smarty对象中的$template_dir变量所指
定的目录下子目录admin中的模板文件index.tpl   

$smarty->display("admin/index.tpl");  

//绝对路径,用来使用不在$template_dir模板目录下的文件  

$smarty->display("/usr/local/include/templates/header.tpl");  

//绝对路径的另外一种方式,在WINDOS平台下的绝对路径必须使用"file:"前缀  

$smarty->display("file:C:/www/pub/templates/header.tpl"); 


在使用Smarty的PHP脚本文件中,除了基于Smarty的内容需要上面五个步骤外,程序的其他逻辑没有改变。例如,文件处理、图像处理、数据库连接、MVC的设计模式等,使用形式都没有发生变化。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!