/** * @param int $page * @param Request $request * @param Application $app * * @return Response */ public function search($page, Request $request, Application $app) { $keyword = $request->query->get('search'); if ($request->query->has('search') && empty($keyword)) { return $app->redirect($app->path('search')); } $response = new Response(); $resultsPerPage = 10; $first = ($page - 1) * $resultsPerPage; /** @var Members $membersRepository */ $membersRepository = $app['repository.members']; if (empty($keyword)) { $members = $membersRepository->findAll($first, $resultsPerPage); $membersCount = $membersRepository->getCount(); $response->headers->clearCookie('keyword'); } else { $membersCount = $membersRepository->getSearchCount($keyword); $members = $membersRepository->search($keyword, $first, $resultsPerPage); $response->headers->setCookie(new Cookie('keyword', $keyword)); } $pages = ceil($membersCount / $resultsPerPage); if ($page > $pages && $page != 1) { $app->abort(404, 'Page does not exist.'); } return $app->render('search.html.twig', ['members' => $members, 'results' => $membersCount, 'results_per_page' => $resultsPerPage, 'pages' => $pages, 'current_page' => $page, 'keyword' => $keyword], $response); }