Jump to content

[Résolu] Mise à jour de la position Helperlist


agarmur

Recommended Posts

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 by agarmur (see edit history)
Link to comment
Share on other sites

  • 2 months later...

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

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

  • agarmur changed the title to [Résolu] Mise à jour de la position Helperlist

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...