/** * @dataProvider getRangeData */ public function testGetItemRanges($numItems, $itemsPerPage, $currentPage, $expectedFirst, $expectedLast) { $paginator = new Paginator($numItems, $itemsPerPage, $currentPage); $this->assertEquals($numItems, $paginator->getTotalItems()); $this->assertEquals($expectedFirst, $paginator->getCurrentPageFirstItem()); $this->assertEquals($expectedLast, $paginator->getCurrentPageLastItem()); }
public function listAction(Application $app, Request $request) { $order_by = $request->get('order_by') ?: 'name'; $order_dir = $request->get('order_dir') == 'DESC' ? 'DESC' : 'ASC'; $limit = (int) ($request->get('limit') ?: 50); $page = (int) ($request->get('page') ?: 1); $offset = ($page - 1) * $limit; $criteria = array(); if (!$app['security']->isGranted('ROLE_ADMIN')) { $criteria['isEnabled'] = true; } $users = $this->userManager->findBy($criteria, array('limit' => array($offset, $limit), 'order_by' => array($order_by, $order_dir))); $numResults = $this->userManager->findCount($criteria); $paginator = new Paginator($numResults, $limit, $page, $app['url_generator']->generate('user.list') . '?page=(:num)&limit=' . $limit . '&order_by=' . $order_by . '&order_dir=' . $order_dir); foreach ($users as $user) { $user->imageUrl = $this->getGravatarUrl($user->getEmail(), 40); } return $app['twig']->render($this->getTemplate('list'), array('layout_template' => $this->getTemplate('layout'), 'users' => $users, 'paginator' => $paginator, 'numResults' => $paginator->getTotalItems(), 'nextUrl' => $paginator->getNextUrl(), 'prevUrl' => $paginator->getPrevUrl(), 'firstResult' => $paginator->getCurrentPageFirstItem(), 'lastResult' => $paginator->getCurrentPageLastItem())); }
public function pagination() { $totalItems = 100000; $itemsPerPage = 50; $currentPage = 1900; $urlPattern = '/foo/page/(:num)'; $paginator = new Paginator($totalItems, $itemsPerPage, $currentPage, $urlPattern); $paginator->setMaxPagesToShow(7); echo $paginator; }