2

コントローラーのアクションでページの詳細を取得するにはどうすればよいですか? アルバムのページネーションを使用しました。

$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 つのレコードがあります。パーページは 2 です。つまり、4 ページあります。getPages() メソッドを使用した後、3 ページ目と 4 ページ目にレコードがありません。しかし、ページネーションは存在します。

どうしたの?コントローラーで合計レコード数、現在のページ番号、および現在のページレコード数を取得する他の方法はありますか? 私に提案してください。

4

1 に答える 1

2

これは予想される動作です。

ページあたりのアイテムを 2 に設定し、現在のページを 1 に設定しました。

これは、最初のページのすべてのアイテムを取得することを意味します。アイテム1と2。

コレクション内の合計ページが必要な場合は、これを使用します。

$paginator->count();

現在のページ番号:

$paginator->getCurrentPageNumber()

コントローラーで現在のページ数を取得するように求めていますが、なぜですか? コントローラーでこの値を設定しているため、既に持っている必要があります (setCurrentPageNumber(..))。

何をしようとしているのか教えていただければ、より良い例をお見せできるかもしれません。

于 2013-01-22T12:09:51.127 に答える