模板引擎——Smarty下
目录
模板引擎——Smarty下 1
一、内建函数 2
1、if…elseif…else…if 2
2、ldelim、rdelim 2
3、literal 3
4、php 3
5、section 4
6、strip 6
二、自定义函数(plugins) 7
1、counter 7
2、cycle 8
3、debug 8
4、fetch 9
5、html_image 10
6、html_table 10
7、html_checkboxes复选框 10
8、html_options 11
9、html_radios 11
三、综合案例——PHP+Smarty完成数据分页 12
1、数据库设计 12
2、设计HTML界面(ok) 12
3、编写程序 12
四、程序篇 13
1、常量 13
2、变量 13
3、常用方法 14
五、缓存篇 17
1、Smarty中的缓存 17
2、使用Smarty缓存 17
3、缓存作用 17
4、缓存文件从“何”而来? 18
5、Smarty工作原理图 18
6、isCached方法 18
7、清除缓存 19
8、单页面多缓存 19
9、缓存集合 20
10、局部缓存 20
六、过滤器 22
1、什么是过滤器 22
2、验证过滤器的存在 22
七、整合Smarty到MVC 23
一、内建函数
1、if…elseif…else…if
基本语法
{if}
{elseif}
{else}
{/if}
功能:实现if选择结构
示例代码:
运行结果:写代码
2、ldelim、rdelim
{ldelim}
{rdelim}
功能:输出Smarty标签的左右分界符
示例代码:
运行效果:
3、literal
基本语法:
{literal}
内容(css代码或js代码)
{/literal}
功能:literal 标签区域内的数据将被当作文本处理,此时模板将忽略其内部的所有字符信息. 该特性用于显示有可能包含大括号等字符信息的css或 javascript 脚本. 当这些信息处于 {literal}{/literal} 标签中时,模板引擎将不分析它们,而直接显示.
示例代码:
效果如下:
4、php
基本语法
{php}
php代码
{/php}
功能:允许我们在Smarty模板引擎中使用php代码(但不推荐使用)
在Smarty3.0该语法已经废除,如要使用,请使用SmartyBC入口
示例:
效果:2015-02-11 00:00:00
5、section
基本语法:
{section name=名称 loop=循环数组(次数) start=开始(0) step=步阶(1) max=最大循环次数}
{sectionelse}
{/section}
功能:实现对数组(索引从0开始且连续)的遍历
参数说明:
loop:要遍历的数组
name:每次遍历时,系统会将遍历索引放入name中
start:默认开始的索引
step:步阶或步调,默认为1
max:最大循环次数
示例代码:
例1:遍历一维数组
运行结果:
section与foreach对比:
foreach可以实现对数组进行遍历,且每次遍历后,会将遍历的内容保存在item选项中,其是真正意义上的遍历数组。类似于PHP中的foreach循环
section也可以实现对数组的遍历,但每次循环时,系统只是通过loop确定数组中元素个数并确定循环次数,并将循环索引放入name选项中,其并不是真正意义上的遍历数组,只是类似于PHP代码中的for循环而已。
例2:section参数使用
效果如下:
例3:section遍历二维数组
运行结果:
section附加属性
{$smarty.section.name.index} :循环索引,默认从0开始
{$smarty.section.name.index_prev} :当前索引的上一次索引
{$smarty.section.name.index_next} :当前索引的下一次索引
{$smarty.section.name.iteration} :第几次循环(迭代)
{$smarty.section.name.first} :当第一次循环时,条件为真
{$smarty.section.name.last} :当最后一次循环时,条件为真
{$smarty.section.name.total} :循环的总次数
示例代码:
运行效果:
6、strip
{strip}
格式化代码
{/strip}
功能:去除元素的首尾空格及换行
示例代码:
运行效果:
鼠标右键查看源代码:
二、自定义函数(plugins)
1、counter
基本语法
{counter start=0 skip=2 print=false}
功能:计数器
参数说明:
start:默认开始数字,默认为1
skip:步阶或步调
print:当前是否输出
示例代码
运行效果:
2、cycle
功能:实现轮显操作
基本语法:
<tr bgcolor=“{cycle values="#eeeeee,#d0d0d0"}”>
示例代码:
运行效果:
3、debug
功能:实现对源代码的调试
基本语法:{debug}
示例代码:
{debug}
运行效果:
4、fetch
基本语法:
{fetch file=“载入文件路径” assign=“变量”}
引用:
{$变量}
示例代码:
运行效果:
5、html_image
基本语法
{html_image file="pumpkin.jpg"}
示例代码:
6、html_table
基本语法:
{html_table loop=$data cols=4 table_attr=‘border="0"‘}
功能:把数组(简单)转化为表格
参数说明:
loop:要遍历的数组
cols:显示多少列
table_attr:表格属性,多个属性请用空格隔开,也可以使用style
示例代码:
运行效果:
7、html_checkboxes复选框
基本语法:
{html_checkboxes name=‘cust’ values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"}
参数说明
name:复选框的名称(主要用于接收)
values:复选的value属性的值(数组)
checked:选中的值(数组)
output:显示的值(数组)
sepatator:元素与元素的分隔符
示例代码:
运行效果:
8、html_options
基本语法:
<select name=customer_id>
{html_options values=$cust_ids selected=$customer_id output=$cust_names}
</select>
参数说明:
value:option选项的value值(数组)
selected:被选中的option (数组)
output:显示出的值(数组)
示例代码:
运行效果:
9、html_radios
基本语法:
{html_radios values=$cust_ids checked=$customer_id output=$cust_names separator="<br />"}
参数说明:
values:radio选项的value值
checked:默认选中的值(要求是一个固定的值)
output:要输出的文本信息(数组)
separator:元素与元素之间的分隔符
示例代码:
运行效果: