From 06eeec04a22bd2a4709d1d89db3d65569880b31e Mon Sep 17 00:00:00 2001 From: "art.dambrine" Date: Tue, 30 Mar 2021 19:33:34 +0200 Subject: [PATCH] search keyword with get param --- src/Controller/PokemonController.php | 13 +++++++++++-- src/Repository/PokemonRepository.php | 20 ++++++++++++++++++++ 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/Controller/PokemonController.php b/src/Controller/PokemonController.php index 51364a3..d9114d5 100644 --- a/src/Controller/PokemonController.php +++ b/src/Controller/PokemonController.php @@ -5,6 +5,7 @@ namespace App\Controller; use App\Entity\Pokemon; use App\Form\PokemonType; use App\Repository\PokemonRepository; +use phpDocumentor\Reflection\Types\Array_; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; @@ -18,8 +19,16 @@ class PokemonController extends AbstractController /** * @Route("/", name="pokemon_index", methods={"GET"}) */ - public function index(PokemonRepository $pokemonRepository): Response + public function index(PokemonRepository $pokemonRepository, Request $request): Response { + // Si l'utilisateur saisit un mot clé + if ($pokemonSearchTerm = $request->query->get('keyword')) { + return $this->render('pokemon/index.html.twig', [ + 'pokemon' => $pokemonRepository->findPokemonsWithSearchTerm($pokemonSearchTerm), + ]); + } + + // Sinon on affiche tout les pokemons return $this->render('pokemon/index.html.twig', [ 'pokemon' => $pokemonRepository->findAll(), ]); @@ -83,7 +92,7 @@ class PokemonController extends AbstractController */ public function delete(Request $request, Pokemon $pokemon): Response { - if ($this->isCsrfTokenValid('delete'.$pokemon->getId(), $request->request->get('_token'))) { + if ($this->isCsrfTokenValid('delete' . $pokemon->getId(), $request->request->get('_token'))) { $entityManager = $this->getDoctrine()->getManager(); $entityManager->remove($pokemon); $entityManager->flush(); diff --git a/src/Repository/PokemonRepository.php b/src/Repository/PokemonRepository.php index 148620f..6f2fec0 100644 --- a/src/Repository/PokemonRepository.php +++ b/src/Repository/PokemonRepository.php @@ -19,6 +19,26 @@ class PokemonRepository extends ServiceEntityRepository parent::__construct($registry, Pokemon::class); } + /** + * @param $params + * @return Pokemon[] Returns an array of Pokemon objects + */ + + public function findPokemonsWithSearchTerm($searchTerm): array + { + return $this->createQueryBuilder('p') + ->andWhere('p.nom LIKE :searchTerm + OR typ.name LIKE :searchTerm + OR gen.name LIKE :searchTerm') + ->leftJoin('p.type1', 'typ') + ->leftJoin('p.generation', 'gen') + ->setParameter('searchTerm', '%' . $searchTerm . '%') + ->orderBy('p.id', 'ASC') + ->getQuery() + ->getResult(); + } + + // /** // * @return Pokemon[] Returns an array of Pokemon objects // */