php之Smarty模板使用方法示例详解 |
|
本文标签:php,Smarty模板,使用 本文详细剖析了smarty模板的使用方法,对于学习smarty的朋友有一定的参考价值 。详情如下: 一、模板中的注释 每一个Smarty模板文件,都是通过Web前台语言(xhtml,css和javascript等)结合Smarty引擎的语法开发的 。
$smarty->left_lelimiter = <{;
$smarty->right_delimiter = }>;
注释:
<{* this a note *}>
二、模板中变量声明 在Smarty中一切以变量为主,所有的呈现逻辑都让模板自行控制 。有几种不同类型的变量,变量的类型取决于它的前缀是什么符号或者被什么符号包围 。变量可以直接被输出或者作业函数属性和修饰符的参数或者用于内部的条件表达式等
<{$name}> <{*常规类型变量,需要调用模板内的assign函数分配值*}>
<{$contacts[row].phone}> <{*数组类型变量,需要调用模板内的assign函数分配值*}>
<body bgcolor="<{#bgcolor#}>"> <{*从配置文件中读取的变量的值并输出*}>
如果在Smarty模板中输出从php中分配的变量,需要在变量前面加$符号并用定界符将它括起来,命名方式和php的变量命名方式一样,并且定界标示符号又有点像是php中的<?php ?>(事实上它们确实会被替换成这个) 三、模板中输出从php分配的变量 在Smarty模板中经常使用的变量有两种:一是从php中分配的变量;另一种是从配置文件中读取的变量 四、Smarty 模板中变量的数学计算 在模板中变量不能直接赋值,但可以参与数学运算,只要在php脚本中可以执行的数学运算都可以在模板中应用,如下所示:
<{$foo + 1}> <{* 变量加1 *}>
<{$foo * $bar}> <{* 两个变量相乘 *}>
<{$foo->bar - $bar[1] * $foo->bar - 3 * 7}> <{* 复合类型变量参加运算 *}>
<{if($foo + 2 == 10)}> <{* 数学运算在程序逻辑中应用 *}>
在Smarty模板中可以识别嵌入在双引号中的变量,但有的变量必须用反引号`(此符号和'在同一个键上)包住,如下所示:
<{"test $foo test"}> <{* 双引号中使用变量 *}>
<{"test `$foo[0]` test"}> <{* 双引号中反引号包住的数组变量 *}>
<{"test `$foo.bar` test"}> <{* 双引号中反引号包住的对象成员变量 *}>
五、smarty模板使用示例: 第1步:加载Smarty模板引擎,如:require libs/Smarty.class.php assign()方法: 这个方法用来给模板中的变量赋值,使用比较容易 //指定一对名称/数值 $smarty->assign(question,你好吗); $smarty->assign(answer,不怎么好); //指定包含名称/数值 $smarty->assign(array(question => 你好吗,answer => 不怎么好));//这种方式比较少用 display()方法: 基于Smarty的脚本中必须用到这个方法,而且一个脚本中只能使用一次,它负责获取和显示由Smarty引擎引用的模板 简单实例: 1、libs:是Smarty类库
<?php
require libs/Smarty.class.php;//加载Smarty.class.php文件
define(SITE_ROOT,./tpl/);//定义一个常量
$tpl = new Smarty();
$tpl->template_dir = SITE_ROOT . template_dir;//存模板文件
$tpl->compile_dir = SITE_ROOT . compile_dir;//存编译过的模板文件
$tpl->config_dir = SITE_ROOT . config_dir;//存特殊配置文件
$tpl->cache_dir = SITE_ROOT . cache_dir;//存Smarty缓存文件
$tpl->caching = 1;//启用缓存
$tpl->cache_lifetime = 60*60*24;//缓存时间1天
$tpl->left_delimiter = <{;//左结束符
$tpl->right_delimiter = }>;//右结束符
7、index.php文件 首页代码如下 <?php require smarty.php; $tpl->assign(title,title测试); $tpl->assign(content,content测试); $tpl->display(template.html); 8、tpl/template_dir/template.html 这是一个模板文件 代码如下
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>
<{$title}>
</title>
</head>
<body>
<{$content}>
</body>
</html>
|