ZF2分页器不显示最后一页

时间:2013-04-13 15:02:19

标签: 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(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仅显示第一页而不显示第二页和第三页。

2 个答案:

答案 0 :(得分:0)

迭代器模式就像一个指针,在迭代器之后你必须重置它。

答案 1 :(得分:0)

我也面临同样的问题

但现在我已经解决了

i am using iterator_to_array($userList);
删除此行后,在视图页面中

它工作正常 可能这对你很有帮助