Tôi có 6 bản ghi trong truy vấn và mã này hiển thị một cách chính xác nó trên 3 trang:ZF2 paginator không hiển thị cuối trang
(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; ?>
nhưng khi tôi thêm vòng lặp foreach trong hành động:
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 không hiển thị trang cuối (3) (1 và 2 trang hiển thị chính xác). Tại sao? Cảm ơn bạn!
Nếu thêm $ paginator-> getIterator() -> rewind() sau foreach {}, paginator chỉ hiển thị trang đầu tiên và không hiển thị trang thứ hai và thứ ba.
một vấn đề lạ, nhưng tại sao bạn thậm chí có một lời rao giảng trống rỗng trong Hành động? Nếu bạn đã xóa mã trong đó để làm ví dụ nhỏ hơn, bạn có thể đã xóa sự cố! Tôi cũng có thể nghĩ rằng looping thông qua $ bài viết sẽ có hiệu quả hơn? – CodeMonkey
Trong dự án thực, dự án bao gồm một số mã. – morin
@CodeMonkey '$ posts' chứa tất cả các hàng có' $ paginator' có các mục bị giới hạn (sẽ hiển thị trên trang). Để nhận các mục đó trong 'Hành động' trước khi gửi để xem, bạn cần vòng lặp đó (như được lấy mẫu ở trên dưới dạng vòng trống hoặc' $ paginator-> getCurrentItems() 'hoặc' '$ paginator-> getItemsByPage ($ page) ') để trống các mục '$ paginator'. – webcoder