Symfony 6 ignore mon filtre (AJAX)
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:
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:
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:
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:
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 %} |