Commits (4)
...@@ -18,17 +18,19 @@ final class EtablissementController extends AbstractController ...@@ -18,17 +18,19 @@ final class EtablissementController extends AbstractController
#[Route('/etablissements', name: 'app_etablissements')] #[Route('/etablissements', name: 'app_etablissements')]
public function index(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response public function index(Request $request, PaginatorInterface $paginator, EtablissementRepository $etablissementRepository): Response
{ {
$queryBuilder = $etablissementRepository->queryFindOrderedByName(); $search = $request->query->get('search'); // Récupération du terme de recherche
$queryBuilder = $etablissementRepository->queryFindOrderedByName($search); // On passe le mot-clé au repository
$pagination = $paginator->paginate( $pagination = $paginator->paginate(
$queryBuilder, $queryBuilder,
$request->query->getInt('page', 1), $request->query->getInt('page', 1),
10 10
); );
return $this->render('etablissement/index.html.twig', [ return $this->render('etablissement/index.html.twig', [
'pagination' => $pagination, 'pagination' => $pagination,
'filtre' => 'Tous les établissements' 'filtre' => $search ? "Résultats pour : $search" : "Tous les établissements",
'search' => $search, // On renvoie la valeur pour pré-remplir le champ de recherche
]); ]);
......
...@@ -66,6 +66,20 @@ class EtablissementRepository extends ServiceEntityRepository ...@@ -66,6 +66,20 @@ class EtablissementRepository extends ServiceEntityRepository
->getSingleScalarResult(); ->getSingleScalarResult();
} }
public function queryFindOrderBy(?string $search = null)
{
$queryBuilder = $this->createQueryBuilder('e');
if ($search) {
$queryBuilder
->where('e.nom LIKE :search')
->setParameter('search', '%' . $search . '%');
}
return $queryBuilder->orderBy('e.nom', 'ASC')->getQuery();
}
public function findRegionByCode(string $code): string public function findRegionByCode(string $code): string
{ {
return $this->createQueryBuilder('e') return $this->createQueryBuilder('e')
......
...@@ -38,7 +38,10 @@ ...@@ -38,7 +38,10 @@
{% else %} {% else %}
<p>Aucun commentaire pour cet établissement.</p> <p>Aucun commentaire pour cet établissement.</p>
{% endfor %} {% endfor %}
<div>
<a href="{{ path('commentaire_new', {'id': etablissement.id}) }}" class="btn btn-primary mt-3">Laisser un commentaire</a> <a href="{{ path('commentaire_new', {'id': etablissement.id}) }}" class="btn btn-primary mt-3">Laisser un commentaire</a>
<div>
<a href="{{ path('app_etablissements') }}" class="btn btn-secondary mt-3">Retour à la liste des établissements</a>
</div>
</div> </div>
{% endblock %} {% endblock %}
...@@ -17,6 +17,12 @@ ...@@ -17,6 +17,12 @@
<div class="example-wrapper"> <div class="example-wrapper">
<!-- Bouton pour ajouter un établissement --> <!-- Bouton pour ajouter un établissement -->
<a href="{{ path('etablissement_new') }}" class="btn-ajouter">➕ Ajouter un établissement</a> <a href="{{ path('etablissement_new') }}" class="btn-ajouter">➕ Ajouter un établissement</a>
{# Formulaire de recherche #}
<form method="GET" action="{{ path('app_etablissements') }}" class="mb-3">
<input type="text" name="search" value="{{ search }}" class="form-control" placeholder="Rechercher un établissement...">
<button type="submit" class="btn btn-primary mt-2">Rechercher</button>
</form>
<h1> Liste de tous les etablissements:</h1> <h1> Liste de tous les etablissements:</h1>
<table> <table>
<tr> <tr>
......
...@@ -18,9 +18,15 @@ ...@@ -18,9 +18,15 @@
<li aria-label="Coordonnées géographiques">🌐 Latitude : {{ etablissement.latitude }} - Longitude : {{ etablissement.longitude }}</li> <li aria-label="Coordonnées géographiques">🌐 Latitude : {{ etablissement.latitude }} - Longitude : {{ etablissement.longitude }}</li>
</ul> </ul>
<h3>Commentaires</h3> <h3>Commentaires</h3>
<div>
<a href="{{ path('show_commentaires', {'id':etablissement.id}) }}">Voir les commentaires</a> <a href="{{ path('show_commentaires', {'id':etablissement.id}) }}">Voir les commentaires</a>
<div>
<a href="{{ path('commentaire_new', {'id': etablissement.id}) }}" class="btn btn-primary mt-3">Laisser un commentaire</a>
</div>
<div>
<a href="{{ path('app_etablissements') }}" class="btn btn-secondary mt-3">Retour à la liste des établissements</a>
</div>
</div> </div>
</div> </div>
{% endblock %} {% endblock %}
\ No newline at end of file