>백엔드 개발 >PHP 튜토리얼 >PHP 템플릿 엔진 Smarty의 내장 기능 섹션 및 섹션 사용에 대해

PHP 템플릿 엔진 Smarty의 내장 기능 섹션 및 섹션 사용에 대해

不言
不言원래의
2018-06-19 09:37:081945검색

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

이 문서의 예제에서는 PHP 템플릿 엔진 Smarty 내장 함수 섹션, 다른 섹션 사용법을 설명합니다. 다음과 같이 참조용으로 모든 사람과 공유하세요.

section은 foreach 외에 Smarty 템플릿에서 루프를 처리하기 위한 또 다른 솔루션입니다. 섹션은 동일한 루프 특성을 갖는다는 점을 제외하면 향상된 foreach 문과 마찬가지로 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 루프 영역에서 사용할 수 있는 변수

변수 이름

설명

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에서 ob_start()를 사용하는 방법


문자 메시지를 보내기 위해 클라우드 패치 네트워크 인터페이스를 호출하는 PHP를 구현하는 방법


위 내용은 PHP 템플릿 엔진 Smarty의 내장 기능 섹션 및 섹션 사용에 대해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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