Bonjour à tous,
J'ignore ce qu'il se passe mais depuis que j'ai rajouté du code avec fetch, ma requête MATCH AGAINST retourne tous les résultats concernant mes articles au lieu d'éxécuter le filtre contenu dans ArticlesRepository... Incompréhensible ... J'ai même essayé de réduire à 5 lignes de résultat dans la requête, tout est ignoré et celle-ci renvoie quand même 100 lignes... J'ai vidé le cache et vérifié toutes les variables, tout semble correct y compris le json renvoyé...
Merci d'avance
ArticlesController.php
articlesRepository.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 //Rechercher un article #[Route('/rechercher-article', 'rechercher-article')] public function rechercherArticle(ArticlesRepository $articlesRepository, Request $request): Response { $form = $this->createForm(RechercherArticleType::class); $form->handleRequest($request); $articles = $articlesRepository->rechercherArticle($form->get('rechercher')->getData()); if ($request->isXmlHttpRequest()) { return new JsonResponse([ 'content' => $this->renderView('_partials/_rechercher-article.html.twig', [ 'articles' => $articles ]) ]); } return $this->render('articles/rechercher-article.html.twig', [ 'form' => $form->createView(), 'titre' => 'Rechercher un article / prestation', 'articles' => $articles ]); }
rechercher-article.js
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 class ArticlesRepository extends ServiceEntityRepository { public function __construct(ManagerRegistry $registry) { parent::__construct($registry, Articles::class); } public function rechercherArticle($rechercher) { $query = $this->createQueryBuilder('a'); if ($rechercher != null) { $query ->andWhere('MATCH_AGAINST(a.reference,a.description) AGAINST (:rechercher boolean)>0') ->setParameter('rechercher','*'.$rechercher.'*') ->orderBy('a.reference', 'ASC') ; } return $query->getQuery()->getResult(); } }
rechercher-article.html.twig
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 //Recherche d'articles par mots-clés window.onload = () => { const formRecherche = document.getElementsByName("rechercher_article"); const rechercher = document.querySelector("#rechercher_article_rechercher"); const resultatRecherche = document.querySelector("#resultat-recherche"); rechercher.addEventListener("input", () => { if (rechercher.value.length >= 3) { fetch("rechercher-article", { headers: { "X-Requested-With": "XMLHttpRequest", }, }) .then((response) => response.json()) .then((data) => { console.log(data.content); resultatRecherche.innerHTML = data.content; }); } }); };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 {% extends 'base.html.twig' %} {% block title %} Saisie et recherche d'un article / prestation {% endblock %} {% block body %} <div class="wrapper-table"> {{ form_start(form) }} <header>{{titre}}</header> {{ form_end(form) }} <div id="resultat-recherche"> </div> </div> {% block javascripts %} <script src="{{asset('assets/js/rechercher-article.js')}}" type="text/javascript"></script> {% endblock %} {% endblock %}
Partager