기본루프메서드만으로도 원하는 모든 출력을 얻을 수 있습니다. 그러나 루프로 출력할 데이터가 배열로 미리 주어져 있을 때 setLoop()를 사용하면 보다 효율적으로 처리할 수 있습니다.
1.
주어진 배열을 루프로 전환하며, 배열 요소의 개수만큼
섹션이 만들어집니다. 인덱스배열 연관배열 모두 가능하며 예약변수 '
key_' 와 '
value_' 를 통해 출력됩니다. 템플릿문법은 기본루프와 동일하고, 예약변수 '
index_' 와 '
size_' 도 사용할 수 있습니다.
setLoop() 의 세번째인자인
버퍼를 지정해서 중첩루프로 사용될 수는 있으나 중첩루프를 가질 수는 없습니다. 버퍼의 기본값은 1 입니다.
2.
두번째 인자로 배열대신, 루프의 반복회수를 지정할 수 있습니다. 템플릿루프문법은 동일하며 'index_' 와 'size_' 를 사용할 수 있습니다.
index.php |
<?php
include 'Template_.class.php';
$tpl = new Template_;
$tpl->define('index', 'index.tpl');
$fruits = array('apple'=>3, 'orange'=>0, 'melon'=>2);
$tpl->loopLoad('fruit', 1);
foreach ($fruits as $name => $num) {
$tpl->loopPushAssign(array(
'name' =>$name,
), 1);
$tpl->setLoop('star', $num, 2);
}
$tpl->print_('index');
?>
|
index.tpl |
<table>
{@ fruit}
<tr>
<td>{.name}</td>
<td>{@ star}<img src=star.gif>{: star}-- no star --{/}</td>
</tr>
{/}
</table>
|
>>output |
<table>
<tr>
<td>apple</td>
<td><img src=star.gif><img src=star.gif><img src=star.gif></td>
</tr>
<tr>
<td>orange</td>
<td>-- no star --</td>
</tr>
<tr>
<td>melon</td>
<td><img src=star.gif><img src=star.gif></td>
</tr>
</table>
|