>백엔드 개발 >PHP 튜토리얼 >PHP 템플릿 엔진 Smarty 내장 함수 섹션, 섹션 사용법 및 예제 자세한 설명

PHP 템플릿 엔진 Smarty 내장 함수 섹션, 섹션 사용법 및 예제 자세한 설명

墨辰丷
墨辰丷원래의
2018-06-04 09:23:591339검색

이 글에서는 주로 PHP 템플릿 엔진 Smarty의 내장 함수인 section과 sectionelse의 사용법을 소개합니다. 루프 처리를 위한 section과 sectionelse의 기술과 사용법을 예제 형식으로 자세히 분석합니다.

섹션은 Smarty 템플릿에 있습니다. 루프를 처리하는 또 다른 방법인 섹션은 foreach보다 더 유연합니다. 이는 동일한 루프 특성을 갖는 것 외에도 많은 추가 옵션을 제공합니다. 루프 실행을 더 잘 제어합니다. 템플릿에는 쌍으로 구성된 섹션 태그를 사용해야 합니다. 섹션 속성은 다음 표를 참조하세요.

Attributes Type 필수인가요? 기본값 설명
name string Yes n/a 루프 이름
loop [$variable _name] n /a 루프 수를 결정하는 변수 이름
start integer No 0 루프 실행의 초기 위치 . 값이 음수인 경우 시작 위치는 배열 끝부터입니다. 예: 배열에 7개의 요소가 있고 시작을 -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

<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 루프 영역에서 사용할 수 있는 변수

변수 이름

Description

index 디스플레이용 현재 루프의 인덱스는 0부터 시작하여(start 속성이 설정된 경우 이 값에서 시작함) 매번 1씩 증가합니다(step 속성이 지정된 경우 이 값에 따라 결정됨).
index_prev 는 이전 루프 인덱스 값을 표시하는 데 사용되며, 루프가 시작되면 이 값은 -1
index_next 은 루프가 실행될 때 다음 루프 인덱스 값을 표시하는 데 사용됩니다. 마지막으로 이 값은 현재 인덱스 값보다 여전히 1 더 큽니다(단계 속성이 지정된 경우 이 값으로 결정됨)
iteration 은 루프 수를 표시하는 데 사용됩니다.
first 이 변수의 값은 현재 섹션 루프가 처음 실행될 때 true입니다.
last 현재 섹션 루프 이 변수의 값은 마지막 실행 시 true입니다.
rownum 이 사용됩니다. 이 속성은 반복의 별칭입니다.
loop 는 루프의 마지막 루프를 표시하는 데 사용되며 이 값을 사용할 수 있습니다. 루프 내부 또는 루프가 끝난 후
show 는 섹션의 매개변수입니다. show의 값은 true이고 false로 설정되면 루프가 표시되지 않습니다. sectionelse 절이 지정된 경우 해당 절의 표시 여부는 루프 실행 횟수를 표시하는 데 사용되는
total 값에 따라 달라집니다. 이 속성은 루프 내뿐만 아니라 실행이 완료된 후에도 호출할 수 있습니다.

요약: 위 내용은 이 글의 전체 내용입니다. 모두의 학습에 도움이 되기를 바랍니다.

관련 추천 :

php텍스트로 방문 횟수 계산 방법 사용, 그림과 텍스트로 자세한 설명

PHP의 비교 연산 및 논리 연산 예제에 대한 자세한 설명

php정의 및like_text() 함수 설명 사용예제에 대한 자세한 설명

위 내용은 PHP 템플릿 엔진 Smarty 내장 함수 섹션, 섹션 사용법 및 예제 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.