Php ZF2分页器don';不显示最后一页
我在查询中有6条记录,此代码在3页上正确显示:Php ZF2分页器don';不显示最后一页,php,zend-framework2,zend-paginator,Php,Zend Framework2,Zend Paginator,我在查询中有6条记录,此代码在3页上正确显示: (action) public function listAction() { $page = (int) $this->params()->fromRoute('id', 0); $posts = $this->getPagesTable()->selectPages(); $paginator = new Paginator
(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; ?>
分页器不显示最后(3)页(1页和2页显示正确)。
为什么?
谢谢大家!
如果在foreach{}之后添加$paginator->getIterator()->rewind(),paginator只显示第一页,不显示第二页和第三页。迭代器模式就像一个指针,迭代后必须重置它。我也面临同样的问题 但现在我解决了
i am using iterator_to_array($userList);
在视图页面中,删除此行后工作正常
这可能对你有帮助,但你为什么在行动中甚至有一个空的foreach?如果您删除了其中的代码以缩小示例,那么您可能已经删除了问题!此外,我还认为在$posts中循环会更有效?在实际项目中,foreach包含一些代码。@CodeMonkey
$posts
包含$paginator
具有有限项(将显示在页面上)的所有行。要在发送到视图之前在操作中获取这些项目,您需要这样的循环(如上所示为空循环或$paginator->getCurrentItems()
或'$paginator->getItemsByPage($page)
),这将导致$paginator
项目为空。@OptimusCrew-这也是如此->getPagesTable()->-selectPages();Zend_Db(或zf2等效物)?是不是从数据库中提取所有结果,然后用php将它们分割开来?@CodeMonkey我不知道zf2 paginator在幕后是如何工作的。也许是的。有一点是肯定的,paginator有缺陷,需要大量的修复和逻辑解决方案。@morin尝试一下:$paginator->getIterator()->rewind()
如果在foreach{}之后添加$paginator->getIterator()->rewind(),paginator只显示第一页,不显示第二页和第三页。我不确定,但这似乎是一个缺陷。在打开一个问题,如果真的有错误,也许有人可以修复。如果这不是一个bug,有人会告诉你哪里出了问题。。。
i am using iterator_to_array($userList);