agarmur Posted January 18, 2024 Share Posted January 18, 2024 (edited) Bonjour, je cherche à mettre à jour la position. voici le code de la position 'position' => array( 'title' => $this->l('Ordem'), 'filter_key' => 'a!position', 'position' => 'position', 'align' => 'center', 'class' => 'fixed-width-md' ), $helperList->position_identifier = 'position'; $helperList->orderBy = 'position'; $helperList->orderWay = 'asc'; comment je peux modifier la position : public function ajaxProcessUpdatePositions(): void { PrestaShopLogger::addLog("ajaxProcessUpdatePositions"); } Je n'arrive pas a récupérer le log Si quelqu'un a déjà fait cela et pourrait m'aider, je suis preneur ! Edited March 29, 2024 by agarmur (see edit history) Link to comment Share on other sites More sharing options...
agarmur Posted March 26, 2024 Author Share Posted March 26, 2024 Bonjour, désolé de cette réponse très tardive, mais j'avais arrête de travailler sur ce module ! Voici le code de back.js de mon module : const urlMonModule = document.location.origin; $(document).ready(function() { $.ajax({ type: 'POST', url: urlMonModule + "/modules/monmodule/ajax/position.php", data: { ajax: true, action: 'updatePositions', }, success: function (response) { console.log('Réponse réussie de la requête AJAX : ', response); }, error: function (xhr, status, error) { console.error('Erreur lors de la mise à jour des positions : ', xhr.responseText); } }); }); voici le code de position.php : <?php require_once(dirname(__FILE__) . '/../../../config/config.inc.php'); require_once(dirname(__FILE__) . '/../../../init.php'); if (Tools::getValue('ajax') && Tools::getValue('action') == 'updatePositions') { $ids = Tools::getValue('ids'); if (is_array($ids)) { foreach ($ids as $position => $id) { PrestaShopLogger::addLog('updatePositions: ' . $position . ' - ' . $id); } die(json_encode(array('success' => true))); } } Je n'est jamais ces logs, donc je suppose qu'il ne passe pas par cela, quand je me rends dans F12->Network->Fetch/XHR, j'ai bien quand je drag and drop la position une requête qui par : controller: AdminModules token: 80f03ba8329d97fedc852a8285ebfab2 rand: 1711468709230 diapo[]: tr_2_4_4 diapo[]: tr_2_3_3 diapo[]: tr_2_5_5 diapo[]: tr_2_6_1 action: updatePositions id: 3 way: 1 ajax: 1 page: 1 selected_pagination: 50 Comment je peux faire pour interagir l'action, car je veux sauvegarder la position en bdd Cordialement ! Link to comment Share on other sites More sharing options...
agarmur Posted March 29, 2024 Author Share Posted March 29, 2024 Bonjour, à tous, je me permets de revenir pour proposer une solution, je serai heureux d'en discuter avec d'autres personnes pour l'améliorer si besoin ! Voici le code Js : document.addEventListener('mouseup', function(e) { if (e.target.closest('#votreTableau tbody tr')) { setTimeout(function() { collectAndSendNewOrder(); }, 100); } }); function collectAndSendNewOrder() { const orderedIds = []; const UrlModule = document.location.origin; document.querySelectorAll('#votreTableau tbody tr').forEach(function(row) { const parts = row.id.split('_'); if (parts.length >= 3) { const idDiapo = parts[2]; orderedIds.push(idDiapo); } }); $.ajax({ type: 'POST', url: UrlModule + '/modules/votreModule/ajax/position.php', headers: {"cache-control": "no-cache"}, async: true, cache: false, data: { action: 'updatePosition', ids: orderedIds }, success: function(response) { console.log(response); } }); } Et voici position.php <?php require_once(dirname(__FILE__) . '/../../../config/config.inc.php'); require_once(dirname(__FILE__) . '/../../../init.php'); if (Tools::getValue('action') == 'updatePosition') { $ids = Tools::getValue('ids'); if (is_array($ids)) { foreach ($ids as $position => $id_diapo) { $sql = "Votre requête SQL"; Db::getInstance()->execute($sql); } die(json_encode(array('success' => true, 'message' => 'Positions updated successfully'))); } } else { die(json_encode(array('success' => false, 'message' => "No action or not AJAX"))); } Ce code peut paraître simple, mais je n'ai jamais rien trouver pour update une position dans un HelperList. Cordialement. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now