Smarty模板垂直排列数组字段

时间:2013-10-14 17:16:00

标签: arrays smarty smarty3

我正在使用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}循环实现此目的的方法。我会感谢任何帮助,因为我找不到任何有用的例子。

1 个答案:

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