Home  >  Article  >  Backend Development  >  About the usage of PHP template engine Smarty's built-in functions section and sectionelse

About the usage of PHP template engine Smarty's built-in functions section and sectionelse

不言
不言Original
2018-06-19 09:37:081835browse

This article mainly introduces the usage of the built-in functions section and sectionelse of the PHP template engine Smarty. It analyzes in detail the techniques and usage of section and sectionelse for loop processing in the form of examples. Friends in need can refer to it

The example in this article describes the usage of the built-in functions section and sectionelse of the PHP template engine Smarty. Share it with everyone for your reference, as follows:

section is another solution for processing loops in Smarty templates besides foreach. Section is more flexible than foreach, just like an improved foreach statement. In addition to having In addition to the same loop features, it also provides many additional options to better control the execution of the loop. In the template, you must use paired section tags. There are two attributes that must be set, name and loop. For the attributes of section, please see the following table:

The name of the looploop[$variable_name]YesDecided to loop Variable name of timesstartintegerNoThe initial position of loop execution. If the value is a negative number, the starting position is calculated from the end of the array. For example: if there are 7 elements in the array and specify start as -2, then the index pointing to the current array is 5. Illegal values ​​(exceeding the lower limit of the loop array) will be automatically adjusted to the closest legal value.stepintegerNo This value determines the step size of the loop. For example, specifying step=2 will only traverse the subscripts 0, 2, 4, etc. elements. If step is a negative value, then traverse the array from back to front.maxintegerNoSet the maximum number of executions of the loop.showbooleanNoDetermine whether to display the loop.

We use an example to demonstrate the use of {section} and {sectionelse} in Smarty.

Example idea: retrieve the content from the database, assign it to an array variable $_html, assign this array variable to the template, and then traverse the array in the template.

Database, main file index.php, Smarty template initialization file init.inc.php, please refer to the previous article "Analysis of usage of PHP template engine Smarty built-in functions foreach and foreachelse"

/ tpl/index.tpl

<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>

Execution result:

section Variables that can be used in the loop area

Attributes Type Is it required Default value Description
name string Yes ##n/a
n/a
0
1
1
true

Variable name

Description

index is used to display the index of the current loop, starting from 0 (if the start attribute is set, then it starts from this value), increasing by 1 each time, (if If the step attribute is specified, it is determined by this value)
index_prev is used to display the previous loop index value. When the loop starts, this value is -1
index_next is used to display the next loop index value. When the loop is executed for the last time, this value is still 1 greater than the current index value (if the step attribute is specified, then Determined by this value)
iteration is used to display the number of loops
first current The value of this variable is true when the section loop is executed for the first time
last The value of this variable is true when the current section loop is executed for the last time
rownum is used to display the number of loops. This attribute is an alias of iteration. They are the same.
loop Used to display the index value of the last loop of the loop. This value can be used inside the loop or after the loop ends.
show is the parameter of section. The value of show is Boolean true and false. If set to false, the loop will not be displayed. If the sectionelse clause is specified, whether the clause is displayed also depends on the value
total is used to display the number of loop executions. This property can be called not only in the loop, but also after the execution is completed

The above is the entire content of this article, I hope it will be useful for everyone's learning. Help, please pay attention to the PHP Chinese website for more related content!

Related recommendations:

How to use ob_start() in php to clear output and selective output

How to implement php calls Yunpian.net interface sends text messages

#

The above is the detailed content of About the usage of PHP template engine Smarty's built-in functions section and sectionelse. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn