Browse Source

search keyword with get param

master
art.dambrine 4 years ago
parent
commit
06eeec04a2
  1. 13
      src/Controller/PokemonController.php
  2. 20
      src/Repository/PokemonRepository.php

13
src/Controller/PokemonController.php

@ -5,6 +5,7 @@ namespace App\Controller;
use App\Entity\Pokemon; use App\Entity\Pokemon;
use App\Form\PokemonType; use App\Form\PokemonType;
use App\Repository\PokemonRepository; use App\Repository\PokemonRepository;
use phpDocumentor\Reflection\Types\Array_;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;
@ -18,8 +19,16 @@ class PokemonController extends AbstractController
/** /**
* @Route("/", name="pokemon_index", methods={"GET"}) * @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', [ return $this->render('pokemon/index.html.twig', [
'pokemon' => $pokemonRepository->findAll(), 'pokemon' => $pokemonRepository->findAll(),
]); ]);
@ -83,7 +92,7 @@ class PokemonController extends AbstractController
*/ */
public function delete(Request $request, Pokemon $pokemon): Response 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 = $this->getDoctrine()->getManager();
$entityManager->remove($pokemon); $entityManager->remove($pokemon);
$entityManager->flush(); $entityManager->flush();

20
src/Repository/PokemonRepository.php

@ -19,6 +19,26 @@ class PokemonRepository extends ServiceEntityRepository
parent::__construct($registry, Pokemon::class); 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 // * @return Pokemon[] Returns an array of Pokemon objects
// */ // */

Loading…
Cancel
Save