Php 如何使用smarty模板限制每个@页的输出项目

Php 如何使用smarty模板限制每个@页的输出项目,php,foreach,smarty,limit,output,Php,Foreach,Smarty,Limit,Output,我有一张物品表。但是超过25项。需要的是,前25项将在一个页面中输出。然后剩余的项目将输出到另一个页面。只有在打印html文件时才会看到 我在这里使用smarty模板。我正在使用 .page { width: 745px; page-break-after: always; } 如果每个页面都有,则确定将有另一个页面。然后我用这个: 指定限制: {assign var='itemLimit' value=25} 计数项目数: {assign var='itemCount' v

我有一张物品表。但是超过25项。需要的是,前25项将在一个页面中输出。然后剩余的项目将输出到另一个页面。只有在打印html文件时才会看到

我在这里使用smarty模板。我正在使用

.page {
    width: 745px;
    page-break-after: always;
}
如果每个页面都有,则确定将有另一个页面。然后我用这个:

指定限制:

{assign var='itemLimit' value=25}
计数项目数:

{assign var='itemCount' value=$RO_ITEMS|@count}
计数要循环的页数:

{assign var='pageCount' value=$itemCount/$itemLimit}
计算前25项之后的项目,或超额项目:

{assign var='extraItems' value=$itemCount%$itemLimit}
指定起点和终点:

{assign var='start' value=0}
{assign var='end' value=$itemLimit}
然后我使用{section}循环项目:

{section name='invoicePage' loop=$pageCount}
这是我用来循环项目的foreach代码:

{foreach from=$ITEMS item=EACHITEM  name=foo}
{if $smarty.foreach.foo.index >= $start and $smarty.foreach.foo.index < $end}
<tr>
  <td>{$EACHITEM.ITEM_SKU}</td>
  <td>{$EACHITEM.ITEM_TYPE}</td>
  <td>{$EACHITEM.ITEM_BRAND}</td>
  <td>{$EACHITEM.ITEM_COLOR}</td>
  <td>{$EACHITEM.ITEM_SIZE}</td>
  <td>{$EACHITEM.ITEM_QTY}</td>
</tr>
{/if}
{/foreach}

不知何故,它的工作,它打印25项。但就是这样。25之后的其他项目不输出。谁能告诉我这个代码有什么问题吗?感谢和问候。

抱歉,但这是Smarty中不应执行的示例。Smarty是显示数据的模板引擎,不用于进行高级计算

此外,如果有许多项,应用程序中的性能可能会非常差。在Smarty中,您通过foreach进行迭代,只显示选定的数据,而不知道是否有人会打印这些数据

此类计算应仅在PHP中完成。在PHP中,您应该只选择那些应该显示的数据,在Smarty中,您应该简单地显示它们

如果我是你,我会创建一个带有简单视图的页面,另一个显示所有数据的页面,用户可以在其中简单打印。在第一种情况下,当用户试图打印它时,我会显示一条消息,这只是一个简单的视图,要查看高级的“转到url”,可以使用css中的媒体打印来完成

{$start = $start + $itemLimit}
{$end = $end + $itemLimit}

{/section}