我正在根据PHP中的一些操作创建以下数组结构。
array
(
[7] => array(
[id] => 7
[page] => dashboard
[text] => Text 3
)
[1] => array(
[id] => 1
[page] => index
[text] => Text 2
)
[3] => array(
[id] => 3
[page] => index
[text] => Text 3
)
}
我正在使用下面的Smarty模板基于这个数组结构创建表,它工作正常。
<table>
<tr>
<th>{text key='sitetour+page'}</th>
<th>{text key='sitetour+text'}</th>
</tr>
{foreach from=$allSteps key='id' item='step'}
<tr>
<td>{$step.page}</td>
<td>{$step.text}</td>
</tr>
{/foreach}
</table>
我正在寻找的是,根据“页面”的值,我需要为“page”的每个唯一值创建表,而不是包含所有值的单个表。
以下提供了示例。
当前输出:(单表无论页面值如何)
page | text
---------------------
dashboard | text 3
index | text 2
index | text 3
预期输出:(根据页面值打破2个表格)
dashboard
---------------------
text 3
index
---------------------
text 2
text 3
我在这里搜索时找不到任何样本。提前谢谢。
答案 0 :(得分:1)
无法检查。但是,请尝试:
{foreach from=$allSteps key='id' item='step' name="loop" }
{if $smarty.foreach.loop.first }
{assign var="current" value=$step.page }
<table>
<thead>
<tr> <td>{$step.page}</td> </tr>
</thead>
<tr> <td>{$step.text}</td> </tr>
{else}
{if $current == $step.page }
<tr>
<td>{$step.text}</td>
</tr>
{else}
{assign var="current" value=$step.page }
</table> <!-- Close prev. table -->
<table> <!-- Start next table -->
<thead>
<tr> <td>{$step.page}</td> </tr>
</thead>
<tr> <td>{$step.text}</td> </tr>
{/if}
{/if}
{/foreach}
</table> <!-- close last table -->
答案 1 :(得分:0)
你期待两个表,但你拥有的html只输出一个表。你应该做的是格式化你的数据:
array
(
['dashboard'] => array(
[7] => array(
[id] => 7
[text] => Text 3)
)
['index'] => array(
[1] => array(
[id] => 1
[text] => Text 2)
[3] => array(
[id] => 3
[text] => Text 3)
)
}
如果页面名称是php数组中的键,请调用此数组$pages
或其他内容,然后执行以下操作:
{foreach $pages as $page}
<table>
<tr>
<th>{$page@key}</th>
</tr>
{foreach $page as $text}
<tr>
<td>{$text['text']}</td>
</tr>
{/foreach}
</table>
{/foreach}
答案 2 :(得分:0)
因为输出是线性的,所以你不能真正在表之间来回传递。你需要做的是有多个foreach循环,并在循环内放置一个条件
<table>
<tr>
<th>{text key='sitetour+page'}</th>
<th>{text key='sitetour+text'}</th>
</tr>
{foreach $allsteps as $step}
<tr>
{if $step.page == "dashboard"}
<td>{$step.text}</td>
{/if}
</tr>
{/foreach}
</table>
<table>
<tr>
<th>{text key='sitetour+page'}</th>
<th>{text key='sitetour+text'}</th>
</tr>
{foreach $allsteps as $step}
<tr>
{if $step.page == "index"}
<td>{$step.text}</td>
{/if}
</tr>
{/foreach}
</table>
编辑:另一种解决方案是在将结果发送到页面
之前在php端解析结果