# Paginating A List Adding pagination to a `[api:DataList]` or `[DataObjectSet]` is quite simple. All you need to do is wrap the object in a `[api:PaginatedList]` decorator, which takes care of fetching a sub-set of the total list and presenting it to the template. In order to create a paginated list, you can create a method on your controller that first creates a `DataList` that will return all pages, and then wraps it in a `[api:PaginatedList]` object. The `PaginatedList` object is also passed the HTTP request object so it can read the current page information from the "?start=" GET var. The paginator will automatically set up query limits and read the request for information. :::php /** * Returns a paginated list of all pages in the site. */ public function PaginatedPages() { $pages = DataList::create('Page'); return new PaginatedList($pages, $this->request); } ## Setting Up The Template Now all that remains is to render this list into a template, along with pagination controls. There are two ways to generate pagination controls: `[api:PaginatedList->Pages()]` and `[api:PaginatedList->PaginationSummary()]`. In this example we will use `PaginationSummary()`. The first step is to simply list the objects in the template: :::ss