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
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
        ]);
    }
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
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.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
//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;
      });
     }
  });
};
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
{% 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 %}