0

PHPで作成された配列があり、それをsmartyテンプレートに割り当てています。以下の例には、それぞれに 6 つの要素を持つ 2 つのデータ セットがあります。セット数は動的に変化する場合があります。

 $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 で作成された 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} ループを使用してこれを達成する方法が見つかりませんでした。実際の例も見つからなかったので、助けていただければ幸いです。

4

1 に答える 1

1

すべての要素を 1 行に表示したい場合は、次のようにします。

<tr>
{foreach from=$formData key='formEl' item='value'}
    <td>{$formEl}</td>
{/foreach}
</tr>

要素の各セットを 1 行、つまり 6 行ずつ表示する場合は、次のようにします。

<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>
于 2013-10-14T21:14:09.430 に答える