An efficient way to use Extbase Pagination in your custom extension, inspired by blog entry from undkonsorten (in german):
https://blog.undkonsorten.com/native-pagination-in-typo3-10
Add PHP class PaginationService
to your extension:
Fx \Vendor\MyExtension\Service\PaginationService
Add method to assign pagination to FLUID view:
/**
* Assign pagination to current view object
*
* array|\TYPO3\CMS\Extbase\Persistence\QueryResultInterface $items
*/
protected function assignPagination($items)
{
if ((int)$this->settings['pagination']['disable'] != 1) {
$paginationService = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(PaginationService::class);
$currentPage = $this->request->hasArgument('currentPage') ? $this->request->getArgument('currentPage') : 1;
$paginator = $paginationService->getPaginator($items, $currentPage);
$pagination = $paginationService->getPagination($paginator);
}
$this->view->assignMultiple(
[
'pagination' => $pagination,
'paginator' => $paginator
]
);
}
Use method in your controller list action for your own entries:
/**
* View list
*/
public function listAction()
{
$myEntries = $this->addressRepository->findAll();
$this->view->assign('myEntries', $myEntries);
$this->assignPagination($myEntries);
}
Then you can access all pagination configuration in your FLUID template as shown in
EXT:operations https://github.com/kanow/operations
Thx to Karsten Nowak for sharing.
See also https://github.com/georgringer/numbered_pagination