我在查询中有6条记录,此代码在3页上正确显示:
(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不显示last(3)页面(正确显示1和2页)。 的为什么吗 谢谢!
如果在foreach {}之后添加$ paginator-&gt; getIterator() - &gt; rewind(),则paginator仅显示第一页而不显示第二页和第三页。
答案 0 :(得分:0)
迭代器模式就像一个指针,在迭代器之后你必须重置它。
答案 1 :(得分:0)
我也面临同样的问题
但现在我已经解决了
i am using iterator_to_array($userList);
删除此行后,在视图页面中它工作正常 可能这对你很有帮助