我正在使用PHP创建一个数组并将其分配给smarty模板。以下示例具有2组数据,每组具有6个元素。集合数量可能会动态变化。
$formData = array (
[homeTeam1] => homeTeam1
[awayTeam1] => awayTeam1
[homeTeamScore1] => homeTeamScore1
[awayTeamScore1] => awayTeamScore1
[gamePoints1] => gamePoints1
[gameTime1] => gameTime1
[homeTeam2] => homeTeam2
[awayTeam2] => awayTeam2
[homeTeamScore2] => homeTeamScore2
[awayTeamScore2] => awayTeamScore2
[gamePoints2] => gamePoints2
[gameTime2] => gameTime2
)
这些是在PHP中创建的somse HTML输入字段,并希望在表单中显示它们以便使用编辑。
我使用以下代码在表单中显示这些输入字段。
{foreach from=$formData key='formEl' item='value'}
<tr>
<td>$formEl</td>
</tr>
{/foreach}
使用上面的代码,html输入字段会一个接一个地水平显示。
当前输出:
homeTeam1
awayTeam1
homeTeamScore1
awayTeamScore1
gamePoints1
gameTime1
预期输出:
homeTeam1 awayTeam1 homeTeamScore1 awayTeamScore1 gamePoints1 gameTime1
我找不到使用{section}循环实现此目的的方法。我会感谢任何帮助,因为我找不到任何有用的例子。
答案 0 :(得分:1)
如果要显示一行中的所有元素,请使用:
<tr>
{foreach from=$formData key='formEl' item='value'}
<td>{$formEl}</td>
{/foreach}
</tr>
如果要在一行中显示每组元素,即逐行显示,请使用:
<tr>
{foreach name='myLoop' from=$formData key='formEl' item='value'}
{if $smarty.foreach.myLoop.index % 6 == 0 && $smarty.foreach.myLoop.index != 0}
</tr><tr>
{/if}
<td> {$smarty.foreach.myLoop.iteration}</td>
{/foreach}
</tr>