<?php
namespace App\Controller;
use App\Repository\ArticleRepository;
use App\Repository\CategoryRepository;
use Knp\Component\Pager\PaginatorInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class SearchController extends AbstractController
{
/**
* @Route("/search", name="search")
*/
public function search(
Request $request,
ArticleRepository $articleRepo,
CategoryRepository $categoryRepo,
PaginatorInterface $paginator
): Response {
$query = $request->query->get('q', '');
$categorySlug = $request->query->get('category', '');
$category = null;
if ($categorySlug) {
$category = $categoryRepo->findBySlug($categorySlug);
}
$results = [];
if ($query) {
$results = $articleRepo->searchPublished($query, $category);
}
$pagination = $paginator->paginate(
$results,
$request->query->getInt('page', 1),
12
);
return $this->render('search/results.html.twig', [
'query' => $query,
'category' => $category,
'results' => $pagination,
'categories' => $categoryRepo->findActive(),
]);
}
}