SpeedPHP/Smarty开发教程
SpeedPHP | 快速入门 | 访问交互 | 数据操作 | 框架概述 | 模板引擎 | 优化加速 | 开发指南 | 数据模型 | API参考 |
对模板赋值[ ]
将变量输入到模板[ ]
程序:
$this->hello = "Hello world";
模板:
<{$hello}>
输出:
Hello world
将数组输入到模板[ ]
程序:
$this->color = array('red' => '红色', 'yellow' => '黄色', 'green' => '绿色');
模板可以使用:
<{$color['red']}>
同时也可以:
<{$color.red>
输出:红色
模板内部语法[ ]
if,elseif,else 条件判断[ ]
<{if $color == "red"}>
这是红色的。
<{elseif $color == "green" || $color == "white"}>
这是绿色或者白色的。
<{else}>
这不知道什么颜色
<{/if}>
Smarty中的if/else除了不使用括号外和PHP的if/else几乎是一样的。
include 包含文件[ ]
<{include file="header.html"}>
请注意include的包含是以'template_dir'的设置为根目录的,而且并不存在相对目录。所以比如我们的footer.html在"模板目录/main/footer.html",我们将使用
<{include file="main/footer.html"}>
来进行包含。
在Smarty中还有include_php,和include一样,只是include_php包含的是可执行的PHP文件。同时,如果使用include_php函数,将可能涉及到Smarty的安全特性,这和{php}语法也是有关的。当然,在基于Smarty的模板开发中,我们原则上不建议在模板内使用PHP的功能。
foreach,foreachelse[ ]
和PHP的foreach一样,循环处理数组。例:
$this->color = array('red' => '红色', 'yellow' => '黄色', 'green' => '绿色'); <{foreach item=colorname from=$color key=enname}> <{$enname}>: <{$colornam}><br> <{/foreach}>
将输出:
- red:红色
- yellow:黄色
- green:绿色
多维数组也是同样处理,请留意以下的多维数组,例:
$students = array( 'name' => 'He Qing', 'age' => 17, 'score' => array( 'math' => 76, 'english' => 92, 'PE' => 72 ), ), array( 'name' => 'Lee Wen', 'age' => 18, 'score' => array( 'math' => 69, 'english' => 80, 'PE' => 79 ), ), ); $this->students = $students ; 模板: 学生成绩:<br> <{foreach item=person from=$students}> 姓名:<{$person.name}><br> 年龄:<{$person.age}><br> 分数: <{foreach item=num key=subject from=$person.score}> <{$subject}>:<{$num}><br> <br><br> <{/foreach}> <{foreachelse}> 暂无学生数据! <{/foreach}>
foreachelse是在变量未赋值的时候将显示。和foreach差不多的还有section。
literal[ ]
literal主要用于显示有可能包含大括号等字符信息的 javascript 脚本. 当这些javascript 脚本处于 {literal}{/literal} 标签中时,模板引擎将不分析它们,而直接显示。
有时候我们在使用Smarty模板时,会遇到程序正常却仅输出空白页面;这时我们可以检查一下,是否该模板中包含了javascript脚本。在这些javascript外边加上literal就不会有问题了。
<{literal}> <script language=javascript> <!-- function isblank(field) { if (field.value == '') { return false; } else { document.loginform.submit(); return true; } } // --> </script> <{/literal}>
strip[ ]
Smarty将清除{strip} ... {/strip}之间的全部空格以及回车。
建议马上在您的模板中使用strip标签,根据实际开发的估计,一般的页面在使用了strip标签几乎可以减少四分之一的html文件大小,尤其在内容特别多的页面(比如首页)在网页的打开速度和显示速度上面有着明显的提高。
例子:
{strip} <table border=0> <tr> <td> <A HREF="{$url}"> <font color="red">This is a test</font> </A> </td> </tr> </table> {/strip}
显示:
<A HREF="http://my.domain.com"> This is a test</A> |
SpeedPHP框架在Smarty模板中的函数[ ]
在模板中,除了可以使用Smarty本身自带的函数外,sp框架还提供了一些常用的函数,下面我们了解一下:
spUrl[ ]
和输出spUrl()函数结果一样,显示一个URL地址
比如:
程序中:echo spUrl('article', 'list', array('page'=>3, 'pageSize' => 10)); // 显示文章列表的第三页
在模板中使用就是:
<{spUrl c='article' a='list' page=3 pageSize=10}>
T[ ]
和输出 T()函数的结果一样,显示多语言情况下的翻译结果
比如:
程序中:echo T("welcome"); // 显示在特定语言下的欢迎信息
在模板中则是:
<{T w='welcome'}>
HTML相关函数[ ]
Smarty提供了一系列的HTML代码生成函数。
html_checkboxes[ ]
生成多个多选框,程序:
$this->cust_checkboxes = array( 1000 => 'Joe Schmoe', 1001 => 'Jack Smith', 1002 => 'Jane Johnson', 1003 => 'Charlie Brown' ); $this->customer_id' = 1001;
模板:
<{html_checkboxes name="id" options=$cust_checkboxes checked=$customer_id separator="
"}>
输出:
<label><input type="checkbox" name="checkbox[]" value="1000" />Joe Schmoe</label><br /> <label><input type="checkbox" name="checkbox[]" value="1001" checked="checked" />Jack Smith</label><br /> <label><input type="checkbox" name="checkbox[]" value="1002" />Jane Johnson</label><br /> <label><input type="checkbox" name="checkbox[]" value="1003" />Charlie Brown</label><br />
html_image[ ]
生成图片img标签,html_image将自动获取图片长宽。
模板:
<{html_image file="pumpkin.jpg"}>
输出:
<img src="pumpkin.jpg" alt="" border="0" width="44" height="68" />
html_options[ ]
生成多个下拉框选项组,需要自行加上<select>,程序:
$this->cust_options= array( 1000 => 'Joe Schmoe', 1001 => 'Jack Smith', 1002 => 'Jane Johnson', 1003 => 'Charlie Brown' ); $this->customer_id' = 1001;
模板:
<select name=customer_id> <{html_options options=$cust_options selected=$customer_id}> </select>
输出:
<select name=customer_id> <option value="1000">Joe Schmoe</option> <option value="1001" selected="selected">Jack Smith</option> <option value="1002">Jane Johnson</option> <option value="1003">Charlie Brown</option> </select>
html_radios[ ]
生成多个单选框,程序:
$this->cust_radios = array( 1000 => 'Joe Schmoe', 1001 => 'Jack Smith', 1002 => 'Jane Johnson', 1003 => 'Charlie Brown' ); $this->customer_id' = 1001;
模板:
<{html_radios name="id" options=$cust_radios checked=$customer_id separator="
"}>
输出:
<input type="radio" name="id[]" value="1000">Joe Schmoe<br /> <input type="radio" name="id[]" value="1001" checked="checked"><br /> <input type="radio" name="id[]" value="1002">Jane Johnson<br /> <input type="radio" name="id[]" value="1003">Charlie Brown<br />
html_select_date[ ]
生成年月日下拉框,模板:
{html_select_date month_format="%m" field_order="YMD" start_year="1950" } html_select_time 生成时分秒下拉框 {html_select_time use_24_hours=true}
html_table[ ]
生成一个表格,程序:
$this->data = array(1,2,3,4,5,6,7,8,9);
模板:
{html_table loop=$data cols=4 }
输出:
<table border="1"> <tr><td>1</td><td>2</td><td>3</td><td>4</td></tr> <tr><td>5</td><td>6</td><td>7</td><td>8</td></tr> <tr><td>9</td><td> </td><td> </td><td> </td></tr> </table>
对模板变量的修饰[ ]
针对输入到模板的变量,有时候我们需要进行一些转换修饰,比如对网址进行URL编码等。下面我们将介绍几个常用的变量修饰器(Modifiers)
default[ ]
默认值
在变量为空或未赋值的时候,将由默认值替代输出。
例:<{$user_name|default:'游客'}>,如果$user_name并未赋值,则输出“游客”。
escape[ ]
对字符串进行编码,常用的编码方式:有html(进行HTML转码)url(进行URL转码)javascript(javascript转码)等
例:$this->url = "http://www.zzbaike.com";
模板:<{$url|escape:"url"}>
输出:http%3A%2F%2Fwww.zzbaike.com
lower小写upper大写[ ]
对字符串进行小写或大写的转换
例:$this->hello = "Hello World!";
模板:
<{$hello|lower}>
将输出 hello world!
<{$hello|upper}>
将输出 HELLO WORLD!
replace[ ]
替换,与str_replace效果相同
例:$this->num = "101010101010101";
模板:<{$num|replace:"1":"0"}> // 1被替换成了0
输出:111111111111111
strip_tags[ ]
去除HTML标签,也就是去除<>中间的字符串
例:$this->myword = "hi, this is red font.";
模板:<{$myword|strip_tags}>
输出:hi,this is red font.
参考来源[ ]
http://speedphp.com/manual.html
SpeedPHP使用手册导航 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|