Back

Création d’un formulaire de recherche avec Symfony

Comment faire une pagination avec Symfony 7 ?

  1. Objectifs

    • À la fin du tutoriel, les développeurs seront capables de :
      • Créer un formulaire de recherche Symfony.
      • Configurer l’entité et le Repository associé
      • Intégrer la logique de recherche dans le contrôleur Symfony
      • Afficher les résultats de recherche dans une vue Twig
      • Gérer la pagination des résultats de recherche (facultatif)
      • Styliser et tester le formulaire de recherche
    • Étape 1: Création d’un formulaire Symfony

      • Vous pouvez créer un formulaire Symfony en utilisant la console Symfony ou en le définissant manuellement dans votre contrôleur.
      • Dans l’exemple suivant j’ai ajoué un formulaire a ma twig module/index.html.twig:
      • <div class="card-header">
            <div class="row justify-content-between">
                <div class="col-sm-auto">
                    <a class="btn btn-outline-primary" href="{{ path('app_module_new') }}">
                        <i class="fas fa-plus"></i> <!-- Icône pour créer un nouveau module -->
                    </a>
                </div>
                <div class="col-sm-auto">
                    <form class="d-flex" role="search" id="searchForm">
                        <div class="form-group">
                            <input type="text" class="form-control me-2" placeholder="Recherche..." name="search" id="searchInput">
                        </div>
                        <button type="submit" class="btn btn-outline-secondary ml-2">
                            <i class="fas fa-search"></i> <!-- Icône de recherche -->
                        </button>
                    </form>
                </div>
            </div>
        </div>

    • Étape 2: Utilisez la logique de recherche dans votre contrôleur Symfony

      • Utilisez les données de recherche soumises par le formulaire pour effectuer une recherche dans votre application et récupérer les résultats correspondants.
      • Voici un exemple de code pour créer un formulaire de recherche Symfony dans votre contrôleur :
      • public function index(Request $request, ModuleRepository $moduleRepository, PaginatorInterface $paginator): Response
        {
            // Récupérer le terme de recherche depuis la requête
            $searchTerm = $request->query->get('search');
        
            // Récupérez la page actuelle à partir de la requête
            $currentPage = $request->query->getInt('page', 1);
        
            // Nombre d'éléments par page
            $itemsPerPage = 6;
        
            // Créez une requête Doctrine pour récupérer les modules
            $queryBuilder = $moduleRepository->createQueryBuilder('m')
                ->orderBy('m.id', 'ASC');
        
            // Ajoutez une condition de recherche si un terme de recherche est spécifié
            if ($searchTerm) {
                $queryBuilder
                    ->andWhere('m.libelle LIKE :searchTerm OR m.duree LIKE :searchTerm')
                    ->setParameter('searchTerm', '%'.$searchTerm.'%');
            }
        
            // Paginez les résultats
            $pagination = $paginator->paginate(
                $queryBuilder,
                $currentPage,
                $itemsPerPage
            );
        
            return $this->render('module/index.html.twig', [
                'pagination' => $pagination,
            ]);
        }



Riadh HAJJI