diff --git a/Documentation/ApiOverview/Pagination/Index.rst b/Documentation/ApiOverview/Pagination/Index.rst index d443d29771..b9da5ba781 100644 --- a/Documentation/ApiOverview/Pagination/Index.rst +++ b/Documentation/ApiOverview/Pagination/Index.rst @@ -24,53 +24,17 @@ Two concrete paginators are available: * For type :php:`\TYPO3\CMS\Extbase\Persistence\QueryResultInterface`: :php:`\TYPO3\CMS\Extbase\Pagination\QueryResultPaginator` -Code example for the :php:`ArrayPaginator`: - -.. code-block:: php - - // use TYPO3\CMS\Core\Pagination\ArrayPaginator; - - $itemsToBePaginated = ['apple', 'banana', 'strawberry', 'raspberry', 'pineapple']; - $itemsPerPage = 2; - $currentPageNumber = 3; - - $paginator = new ArrayPaginator($itemsToBePaginated, $currentPageNumber, $itemsPerPage); - $paginator->getNumberOfPages(); // returns 3 - $paginator->getCurrentPageNumber(); // returns 3, basically just returns the input value - $paginator->getKeyOfFirstPaginatedItem(); // returns 4 - $paginator->getKeyOfLastPaginatedItem(); // returns 4 - - // use TYPO3\CMS\Core\Pagination\SimplePagination; - - $pagination = new SimplePagination($paginator); - $pagination->getAllPageNumbers(); // returns [1, 2, 3] - $pagination->getPreviousPageNumber(); // returns 2 - $pagination->getNextPageNumber(); // returns null - // … - - $this->view->assignMultiple( - [ - 'pagination' => $pagination, - 'paginator' => $paginator, - ] - ); - -.. code-block:: html - - - - - {item} - +Code example for the :php:`ArrayPaginator` in an +:ref:`Extbase controller `: + +.. literalinclude:: _ArrayPaginatorExampleController.php + :caption: EXT:my_extension/Controller/ExampleController.php + +And the corresponding Fluid template: + +.. literalinclude:: _ArrayPaginatorExamplePagination.html + :caption: EXT:my_extension/Resources/Private/Templates/ExamplePagination.html + Sliding window pagination ========================= @@ -93,31 +57,5 @@ Replace the usage of :php:`SimplePagination` with :php:`\TYPO3\CMS\Core\Pagination\SlidingWindowPagination` and you are done. Set the 2nd argument to the maximum number of links which should be rendered. -.. code-block:: php - - // use TYPO3\CMS\Extbase\Pagination\QueryResultPaginator; - // use TYPO3\CMS\Core\Pagination\SlidingWindowPagination; - - $currentPage = $this->request->hasArgument('currentPageNumber') - ? (int)$this->request->getArgument('currentPageNumber') - : 1; - $itemsPerPage = 10; - $maximumLinks = 15; - - $paginator = new QueryResultPaginator( - $allItems, - $currentPage, - $itemsPerPage - ); - $pagination = new SlidingWindowPagination( - $paginator, - $maximumLinks - ); - - $this->view->assign( - 'pagination', - [ - 'pagination' => $pagination, - 'paginator' => $paginator, - ] - ); +.. literalinclude:: _SlidingWindowExampleController.php + :caption: EXT:my_extension/Controller/ExampleController.php diff --git a/Documentation/ApiOverview/Pagination/_ArrayPaginatorExampleController.php b/Documentation/ApiOverview/Pagination/_ArrayPaginatorExampleController.php new file mode 100644 index 0000000000..19d1a6854c --- /dev/null +++ b/Documentation/ApiOverview/Pagination/_ArrayPaginatorExampleController.php @@ -0,0 +1,44 @@ +getNumberOfPages(); // returns 3 + $paginator->getCurrentPageNumber(); // returns 3, basically just returns the input value + $paginator->getKeyOfFirstPaginatedItem(); // returns 4 + $paginator->getKeyOfLastPaginatedItem(); // returns 4 + + $pagination = new SimplePagination($paginator); + $pagination->getAllPageNumbers(); // returns [1, 2, 3] + $pagination->getPreviousPageNumber(); // returns 2 + $pagination->getNextPageNumber(); // returns null + + // ... more logic ... + + $this->view->assignMultiple( + [ + 'pagination' => $pagination, + 'paginator' => $paginator, + ], + ); + + return $this->htmlResponse(); + } +} diff --git a/Documentation/ApiOverview/Pagination/_ArrayPaginatorExamplePagination.html b/Documentation/ApiOverview/Pagination/_ArrayPaginatorExamplePagination.html new file mode 100644 index 0000000000..c3a207adaa --- /dev/null +++ b/Documentation/ApiOverview/Pagination/_ArrayPaginatorExamplePagination.html @@ -0,0 +1,16 @@ + + + + {item} + diff --git a/Documentation/ApiOverview/Pagination/_SlidingWindowExampleController.php b/Documentation/ApiOverview/Pagination/_SlidingWindowExampleController.php new file mode 100644 index 0000000000..aac6dd8ca5 --- /dev/null +++ b/Documentation/ApiOverview/Pagination/_SlidingWindowExampleController.php @@ -0,0 +1,51 @@ +exampleRepository->findAll(); + + $currentPage = $this->request->hasArgument('currentPageNumber') + ? (int)$this->request->getArgument('currentPageNumber') + : 1; + $itemsPerPage = 10; + $maximumLinks = 15; + + $paginator = new QueryResultPaginator( + $allItems, + $currentPage, + $itemsPerPage, + ); + $pagination = new SlidingWindowPagination( + $paginator, + $maximumLinks, + ); + + // ... more logic ... + + $this->view->assign( + 'pagination', + [ + 'pagination' => $pagination, + 'paginator' => $paginator, + ], + ); + + return $this->htmlResponse(); + } +}