Bonjour à tous,
Quelqu'un saurait-il me dire pour quelle raison le fetch contenu dans le code ci-dessous concatène 2 routes au lieu de se contenter de celle que je lui demande ?
Par exemple pour un acompte la reqûete envoyée par fetch va concaténer la route de la page actuelle à celle spécifiée par le controller AcomptesController, cela donne :
"admin/ecritures/modifier-ecriture/acomptes/acomptes-ecriture" alors que la route correcte est simplement "admin/acomptes/acomptes-ecriture/+ numéro écriture"...
Je ne sais pas si c'est moi qui fait une bourde mais je ne comprends pas pourquoi ce phénomène se produit surtout qu'il existe un controller pour les écritures et un autre pour les acomptes, lignes, avoirs etc...
Le but étant de présenter les infos dans des onglets pour alléger les requêtes à l'instant T...
A noter que si je rentre la bonne adresse manuellement dans le fetch j'ai bien la bonne réponse qui s'affiche dans l'onglet actif... incompréhensible !
Merci d'avance pour vos lumières !!!
AcomptesController.php :
TabsEcriture.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 //Afficher les lignes d'acomptes pour cette écriture + le total d'acomptes en Ajax #[Route('acomptes-ecriture/{id}', name: 'acomptes-ecriture')] public function acomptesEcriture(Ecritures $ecritures, AcomptesRepository $acomptesRepository, $id): Response { $lignes = $acomptesRepository->findBy(['liaison' => $id], ['date_acompte' => 'desc']); $idEcriture = $ecritures->getId(); $totalAcomptes = $ecritures->getTotalAcomptesEcriture(); return new JsonResponse([ 'content' => $this->renderView('_partials/_acomptes-ecriture.html.twig', compact('lignes', 'totalAcomptes', 'idEcriture')) ]); }
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
25
26
27
28
29
30
31
32
33
34
35
36
37 window.onload = () => { const tabContent = document.querySelector(".tabs__content"); const radButtons = document.querySelectorAll(".tabs__radio"); radButtons.forEach((rb) => rb.addEventListener("change", (e) => { let url = ""; switch (e.target.id) { case "lignes": url = "lignes-ecriture"; break; case "acomptes": url = "acomptes-ecriture"; break; case "avoirs": url = "avoirs-ecriture"; break; default: return; } fetch(url, { method: "GET", headers: { "X-Requested-With": "XMLHttpRequest", "Content-Type": "Application/json", }, }) .then((response) => response.json()) .then((data) => { tabContent.innerHTML = data.content; }) .catch((error) => alert("Erreur : " + error)); }) ); };
Partager