我有6條記錄的查詢和驗證碼正確顯示它3頁:ZF2分頁程序不顯示最後一頁
(action)
public function listAction()
{
$page = (int) $this->params()->fromRoute('id', 0);
$posts = $this->getPagesTable()->selectPages();
$paginator = new Paginator(new PaginatorIterator($posts));
$paginator->setCurrentPageNumber($page)
->setItemCountPerPage(2)
->setPageRange(7);
return new ViewModel(array(
'paginator' => $paginator,
));
}
(view)
<?php foreach ($paginator as $post) : ?>
<h2><?php echo $this->escapeHtml($post->id); ?></h2>
<div><?php echo $this->escapeHtml($post->name);?>
<?php endforeach; ?>
,但是當我添加foreach循環在行動:
public function listAction()
{
$page = (int) $this->params()->fromRoute('id', 0);
$posts = $this->getPagesTable()->selectPages();
$paginator = new Paginator(new PaginatorIterator($posts));
$paginator->setCurrentPageNumber($page)
->setItemCountPerPage(2)
->setPageRange(7);
foreach ($paginator as $post) {
// some code or empty foreach
};
return new ViewModel(array(
'paginator' => $paginator,
));
}
paginator不顯示最後(3)頁(1和2頁顯示正確)。 爲什麼? 謝謝!
如果加$ paginator-> getIterator()方法 - >快退()後的foreach {},分頁程序只顯示第一頁,並且不顯示第二和第三頁。
一個奇怪的問題,但爲什麼你甚至在行動中有一個空的foreach?如果您已經刪除了代碼以使該示例更小,那麼您可能已經刪除了該問題!我也會認爲循環$帖子會更有效率嗎? – CodeMonkey
在實際項目中,foreach包含一些代碼。 – morin
@CodeMonkey'$ posts'包含'$ paginator'具有有限項目(將在頁面上顯示)的所有行。要在發送到View之前將這些項目放在'Action'中,您需要這樣的循環(如上面的空循環或$ paginator-> getCurrentItems()或$'paginator-> getItemsByPage($ page)')在清空'$ paginator'項目。 – webcoder