src/Controller/SearchController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Repository\ArticleRepository;
  4. use App\Repository\CategoryRepository;
  5. use Knp\Component\Pager\PaginatorInterface;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Routing\Annotation\Route;
  10. class SearchController extends AbstractController
  11. {
  12.     /**
  13.      * @Route("/search", name="search")
  14.      */
  15.     public function search(
  16.         Request $request,
  17.         ArticleRepository $articleRepo,
  18.         CategoryRepository $categoryRepo,
  19.         PaginatorInterface $paginator
  20.     ): Response {
  21.         $query $request->query->get('q''');
  22.         $categorySlug $request->query->get('category''');
  23.         $category null;
  24.         if ($categorySlug) {
  25.             $category $categoryRepo->findBySlug($categorySlug);
  26.         }
  27.         $results = [];
  28.         if ($query) {
  29.             $results $articleRepo->searchPublished($query$category);
  30.         }
  31.         $pagination $paginator->paginate(
  32.             $results,
  33.             $request->query->getInt('page'1),
  34.             12
  35.         );
  36.         return $this->render('search/results.html.twig', [
  37.             'query' => $query,
  38.             'category' => $category,
  39.             'results' => $pagination,
  40.             'categories' => $categoryRepo->findActive(),
  41.         ]);
  42.     }
  43. }