public function listEntityAction(CMSEntity $cmsEntity, Application $app, Request $request) { $pageNumber = $request->query->has('page') ? $request->query->get('page') : 1; $limit = $request->query->has('limit') ? $request->query->get('limit') : $cmsEntity->getDefaultPageLimit(); $qb = $app['em']->getRepository($cmsEntity->getClass())->createQueryBuilder('e'); if ($limit && $limit >= 0) { $qb->setMaxResults($limit); $qb->setFirstResult(($pageNumber - 1) * $limit); } else { $limit = null; $pageNumber = 1; } $paginator = new Paginator($qb); $entities = []; foreach ($paginator as $entity) { $entities[] = $entity; } $resultCount = count($paginator); $totalPages = $limit && $limit <= $resultCount ? ceil($resultCount / $limit) : 1; return $app->render('admin/list.html.twig', ['columns' => $cmsEntity->getColumns(), 'items' => $entities, 'cmsEntity' => $cmsEntity, 'heading' => ucwords($cmsEntity), 'resultCount' => $resultCount, 'currentPage' => $pageNumber, 'limit' => $limit, 'totalPages' => $totalPages]); }