Smarty 模板设计
21.3.1 Smarty 模板文件
Smarty 模板文件是由一个页面中所有的静态元素,加上一些定界符“{...}”组成的。模板文件统一存放的位置是 templates 目录。模板中不允许出现 PHP 代码段。Smarty 模板中的所有注释、变量、函数等都要包含在定界符内。
21.3.2 注释
Smarty 中的注释和 PHP 注释类似,都不会显示在源代码当中。注释包含在两个星号“*”中间,格式如下:{* 这是注释 *}
21.3.3 变量(Smarty 中的变量来自以下 3 个部分:)
(1) PHP 页面中的变量
也就是 assign()方法传过来的变量。使用方法和在 PHP 中是一样的,也需要使用“$”符号,略有不同的是对数组的读取。在 Smarty 中读取数组有两种方法:一通过索引获取:{$arr[0]},另一种是通过键值获取数组元素:{$arr.title}。两种格式均适用于二维数组。
(2) 保留变量
相当于 PHP 中的预定义变量。在 Smarty 模板中使用保留变量时无须使用 assign() 方法传值,而只需直接调用变量名即可。
get、post、server、session、cookie、request 等价于 PHP 中的$_GET、$_POST、$_SERVER、$_SESSION、$_COOKIE、$_REQUEST
now 当前的时间戳。等价于 PHP 中的time()
const 用 const 包含修饰的为常量
config 配置文件内容为变量
(3) 从配置文件中读取数据
调用配置文件中变量的格式有以下两种:1,使用“#”号,将变量名置于两个“#”号中间,即可像普通变量一样调用配置文件内容。2,使用保留变量中的 $smarty_config.来调用配置文件。载入配置文件:{config_load file="./../04.conf"}。
21.3.4 修饰变量
变量修饰的一般格式如下:{variable_name|modifer_name:parameter1: …} variable_name 为变量名称。modifer_name 为修饰变量的方法名。变量和方法之间使用符号“|”分隔。parameter1 是参数值。如果有多个参数,则使用“:”分隔开。
capitalize [首字母大写]
count_characters [计算字符数]
cat [连接字符串]
count_paragraphs [计算段落数]
count_sentences [计算句数]
count_words [计算词数]
date_format [时间格式]
default [默认]
escape [转码]
indent [缩进]
lower [小写 ]
nl2br [换行符替换成<br />]
regex_replace [正则替换]
replace [替换]
spacify [插空]
string_format [字符串格式化]
strip [去除(多余空格)]
strip_tags [去除html标签]
truncate [截取]
upper [大写]
wordwrap [行宽约束]
在对变量进行修饰时,不仅可以单独使用上面的方法,而且还可以同时使用多个。需要注意的是,在每种方法之间使用“|”分隔。
21.3.5 流程控制
Smarty 模板中的流程控制语句包括 if...elseif...else 条件控制语句和 foreach、section 循环控制语句。
(1),if...else..else 语句
if 条件控制语句的使用和 PHP 中的 if 语句大同小异。需要注意的是 if 必须以 /if 为结束标志。格式如下:
{if 条件语句 1}
语句 1
{elseif 条件语句 2}
语句 2
{else}
语句 3
{/if}
(2) foreach 循环控制
Smarty 模板中的 foreach 语句可以循环输出数组。与另一个循环控制语句循环 section 相比,在使用格式上要简单得多,一般用于简单数组处理。格式如下:
{foreach name=foreach_name key=key item=item from=arr_name}
...
{/foreach}
参数含义:name 为该循环的名称;key 为当前元素的键值;item 是当前元素的变量名;from 是该循环的数组。其中,item 和 from 是必要参数,不可省略。
例:
{foreach key=key item=item from=$arr}
{$key} =>{$item}<br>
{/foreach}