Zend Framework 2 - 分页

时间:2013-01-17 11:10:46

标签: zend-framework2

如何在控制器的操作中获取页面详细信息? 我使用了专辑的分页。

$iteratorAdapter    = new \Zend\Paginator\Adapter\Iterator($this->getAlbumTable()->fetchAll());
$paginator          = new \Zend\Paginator\Paginator($iteratorAdapter);
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(2);

return new ViewModel(array(
   'paginator' => $paginator
));

我曾试图使用方法getPages()。

$iteratorAdapter    = new \Zend\Paginator\Adapter\Iterator($this->getAlbumTable()->fetchAll());
$paginator          = new \Zend\Paginator\Paginator($iteratorAdapter);
$paginator->setCurrentPageNumber($page);
$paginator->setItemCountPerPage(2);
$pagingInfo = $paginator->getPages();
return new ViewModel(array(
   'paginator' => $paginator,
   'pagingInfo' => $pagingInfo,
));

在这种情况下,我在表中有8条记录。 Perpage是2.所以,我有4页。 使用getPages()方法后,第3&第4页没有记录。但是分页存在。

怎么了?是否还有其他方法可以获得记录总数,当前页码和当前页面记录在控制器中的数量? 请建议我。

1 个答案:

答案 0 :(得分:2)

这是预期的行为。

您已将每页的项目设置为2,将当前页面设置为1。

这意味着您将获得第一页上的所有项目,即。第1项和第2项。

如果您想要集合中的总页数使用:

$paginator->count();

当前页码:

$paginator->getCurrentPageNumber()

您要求获取控制器中的当前页数,但为什么?您正在控制器中设置此值,因此您必须已经拥有它(setCurrentPageNumber(..))..

如果你让我知道你想要做什么,也许我可以向你展示一个更好的例子。