Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ZF2分页器don';不显示最后一页_Php_Zend Framework2_Zend Paginator - Fatal编程技术网

Php ZF2分页器don';不显示最后一页

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

我在查询中有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; ?>
分页器不显示最后(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);