PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法。分享给大家供大家参考,具体如下:
section 是 Smarty 模板中除了 foreach 以外的另一种处理循环的方案,section 比 foreach 要灵活,就像是一个改进的 foreach 语句,除了拥有相同的循环特性外,还提供了很多附加选项,可以更好的控制循环的执行。在模板中,必须使用成对的 section 标记,有两个必须设置的属性 name 和 loop ,关于 section 的属性请看下表:
属性 | 类型 | 是否必须 | 缺省值 | 描述 |
---|---|---|---|---|
name | string | Yes | n/a | 该循环的名称 |
loop | [$variable_name] | Yes | n/a | 决定循环次数的变量名称 |
start | integer | No | 0 | 循环执行的初始位置. 如果该值为负数,开始位置从数组的尾部算起. 例如:如果数组中有7个元素,指定start为-2,那么指向当前数组的索引为5. 非法值(超过了循环数组的下限)将被自动调整为最接近的合法值. |
step | integer | No | 1 | 该值决定循环的步长. 例如指定step=2将只遍历下标为0、2、4等的元素. 如果step为负值,那么遍历数组的时候从后向前遍历. |
max | integer | No | 1 | 设定循环最大执行次数. |
show | boolean | No | true | 决定是否显示该循环. |
我们通过一个实例,来演示 Smarty 中 {section} 和 {sectionelse} 的使用。
实例思路:从数据库中取出内容,赋给一个数组变量 $_html ,再给这个数组变量分配给模板,然后在模板中进行该数组的遍历。
数据库、主文件 index.php,Smarty 模板初始化文件 init.inc.php,可参考前面一篇《PHP模板引擎Smarty内建函数foreach,foreachelse用法分析》
/tpl/index.tpl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
<html>
<head>
<meta http-equiv= "Content-Type" content= "text/html; charset=utf-8" >
<title>section,sectionelse</title>
</head>
<body>
<table align= "center" border= "1" width= "800" >
<tr>
<th>编号(iteration)</th>
<th>编号(rownum)</th>
<th>姓名</th>
<th>电子邮件</th>
<th>添加时间</th>
</tr>
<{section loop= $data name= "ls" max= "100" start= "0" step= "2" }> <!-- 使用 section 遍历数组 $data ,max 表示最多可以循环多少条,start 表示从哪个数组下标开始显示,step决定了循环的步长,如果设置为2,那么将遍历下标为0,2,4……的元素 -->
<!-- 在此,我们做几个保留变量 $smarty .section 的操作 -->
<!-- 当数据显示第一条的时候,第一行的表格背景为黄色,使用属性:first -->
<!-- 当数据显示最后一条的时候,最后一行的表格背景为蓝色,使用属性:last -->
<{ if $smarty .section.ls.first}>
<tr align= "center" bgcolor= "#FFFF00" >
<{ elseif $smarty .section.ls.last}>
<tr align= "center" bgcolor= "#0000FF" >
<{ else }>
<tr align= "center" >
<{/ if }>
<td><{ $smarty .section.ls.iteration}></td> <!-- iteration 是保留变量中显示行号的属性 -->
<td><{ $smarty .section.ls.rownum}></td> <!-- rownum 是保留变量中显示行号的属性 -->
<td><{ $data [ls].username}></td> <!-- 输出数组第二维下标为 username 的元素值 -->
<td><{ $data [ls].email}></td> <!-- 输出数组第二维下标为 email 的元素值 -->
<td><{ $data [ls].addTime}></td> <!-- 输出数组第二维下标为 addTime 的元素值 -->
</tr>
<{sectionelse}> <!-- 如果分配过来的数组没有内容的话,显示下面内容 -->
<tr>
<td colspan= "5" >对不起!暂时没有数据。</td>
</tr>
<{/section}>
<{ if $data }> <!-- 如果循环的次数不为空的话,那么使用 Smarty 的保留变量 { $smarty .section} 显示出循环的次数 -->
<tr>
<td align= "center" colspan= "5" >循环的次数为:<{ $smarty .section.ls.total}></td>
</tr>
<{/ if }>
</table>
</body>
</html>
|
执行结果:
section 循环区域中可以使用的变量
变量名
|
描述
|
index | 用于显示当前循环的索引,从 0 开始(如果设置了 start 属性,那么就由该值开始),每次加 1,(如果指定了 step 属性,那么由该值决定) |
index_prev | 用于显示上一个循环索引值,循环开始时,此值为 -1 |
index_next | 用于显示下一个循环索引值,循环执行到最后一次时,此值仍然比当前索引值大 1(如果指定了 step 属性,那么由该值决定) |
iteration | 用于显示循环的次数 |
first | 当前 section 循环在第一次执行时该变量的值为 true |
last | 当前 section 循环在最后一次执行时该变量的值为 true |
rownum | 用于显示循环的次数,该属性是 iteration 的别名,两者相同 |
loop | 用于显示该循环上一次循环时的索引值,该值可以用于循环内部或循环结束后 |
show | 是 section 的参数,show 取值为布尔值 true 和 false,如果设置为false,该循环将不显示。如果指定了 sectionelse 子句,该子句是否显示也取决于该值 |
total | 用于显示循环执行的次数。不仅可以在循环中,也可以在执行结束后调用此属性 |
转载于:https://www.cnblogs.com/apolloren/p/9343340.html
PHP模板引擎Smarty内建函数section,sectionelse用法详解相关推荐
- php模板引擎循环start,PHP模板引擎Smarty内建函数section,sectionelse用法详解
本文实例讲述了PHP模板引擎Smarty内建函数section,sectionelse用法.分享给大家供大家参考,具体如下: section 是 Smarty 模板中除了 foreach 以外的另一种 ...
- java调用js模板引擎_JavaScript模板引擎应用场景及实现原理详解
本文实例讲述了JavaScript模板引擎应用场景及实现原理.分享给大家供大家参考,具体如下: 一.应用场景 以下应用场景可以使用模板引擎: 1.如果你有动态ajax请求数据并需要封装成视图展现给用户 ...
- php 上传 文件模板,PHP文件上传代码用法详解
本文章是一篇适合于php入门者的文章告诉大如何编辑php文件上传代码,在编辑前我们需要了解几点,有及FILES全局变量的理解了,有需要学习php文件上传的朋友可参考本文章. php文件上传代码编写过程 ...
- PHP模板引擎smarty详细介绍
篇文章主要介绍了PHP模板引擎smarty详细介绍,本文讲解了什么是smarty.smarty优点.不适合使用smarty的地方.smarty目录结构及版本,需要的朋友可以参考下 /* 一.什么是sm ...
- php smarty 模版引擎,php模板引擎Smarty入门 - 小俊学习网
如果要实现前端模板和后台逻辑业务处理相分离,MVC的思想开发网站的话,可使用模板引擎来完成.来学习php模板引擎Smarty,它分开了逻辑程序和外在的内容,提供了一种易于管理的方法. 1. 什么是模板 ...
- spring boot模板引擎thymleaf用法详解
spring boot模板引擎thymleaf用法详解 Spring-boot支持FreeMarker.Thymeleaf.jsp.veocity 但是对freemarker和thymeleaf的支持 ...
- php smarty 原理,php模板原理PHP模板引擎smarty模板原理浅谈
mvc是开发中的一个伟大的思想,使得开发代码有了更加清晰的层次,让代码分为了三层各施其职.无论是对代码的编写以及后期的阅读和维护,都提供了很大的便利. 我们在php开发中,视图层view是不允许有ph ...
- php theme_path,PHP_Yii2主题(Theme)用法详解,本文实例讲述了Yii2主题(Theme) - phpStudy
Yii2主题(Theme)用法详解 本文实例讲述了Yii2主题(Theme)用法.分享给大家供大家参考,具体如下: 首先看看主要的配置方式: 'components' => [ 'view' = ...
- smarty手册-smarty中foreach循环语句详解
原文地址:smarty手册-smarty中foreach循环语句详解作者:谭博 {foreach}循环也有自身属性的变量,可以通过{$smarty.foreach.name.property}访问,其 ...
最新文章
- 1亿以内素数的个数_ghpython_素数
- CNN数玉米穗--TasselNet: Counting maize tassels in the wild via local counts regression network
- 区块链智能合约入门:Hello world(2)
- 3根机械手指打《超级马里奥》登上Science子刊
- MFC 加载并显示图片的四种方法
- 出现Press ENTER or type command to continue的原因
- 阿里AI界的新伙伴,1秒钟自动生成20000条文案
- 用HTML做一个简单的web登录页面,简单的JavaWeb注册登录案例
- 一起学习C语言:函数(三)
- 次世代游戏设计的相关介绍
- iOS 文字样式处理总结(字体、前背景色、斜体、加粗、对齐、行间距、段间距、动态获取字符串label宽高等)...
- switch 选择语句
- 香蕉派开源硬件 Banana PI
- html 多个mp3,HTML5 audio 如何实现播放多个MP3音频
- 64位ubuntu能安装mysql数据库_Ubuntu操作系统下安装MySQL数据库的方法
- python抢商品_python爬虫,抢小米抢购,
- 两个平面的位置关系和判定方程组解_高一数学必修二平面知识点详解
- 时序逻辑电路的基础知识
- 千兆交换机级联问题一则
- charles抓取移动端的htpps
热门文章
- python函数解读_通过7个Python函数来解释区块链
- 小程序用php的优势,小程序的特点及优势?
- 浸油式服务器散热系统,一种服务器散热系统
- 贝叶斯集锦:从MC、MC到MCMC
- 无法将W ndOWs配置为在,配置Wndows2000中的磁盘配额.doc
- etl spring_山寨一个Spring的@Component注解
- 北方民族大学计算机考研专业课,2021北方民族大学专业课考研真题资料汇总!!...
- 前景检测算法(四)--GMM
- VScode环境配置C/C++
- Win32汇编学习笔记(罗云彬)(二)