Jump to content

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


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 weeks later...

Bonjour,

Il semble que vous ayez des problèmes pour récupérer les logs dans votre méthode ajaxProcessUpdatePositions. Si vous ne voyez pas les logs, voici quelques suggestions pour déboguer votre problème :

Vérifiez la Configuration des Logs :

Assurez-vous que les logs sont activés dans Advanced Parameters > Logs dans le Back Office.

Emplacement des Logs :

Les logs sont généralement dans le dossier admin/logs de votre installation PrestaShop.

Erreur dans la Méthode :

Ajoutez un bloc try-catch pour détecter d'éventuelles erreurs dans votre méthode ajaxProcessUpdatePositions. Les erreurs seront enregistrées dans les logs.

Exemple :

public function ajaxProcessUpdatePositions(): void
{
    try {
        PrestaShopLogger::addLog("ajaxProcessUpdatePositions");
    } catch (Exception $e) {
        PrestaShopLogger::addLog("Error: " . $e->getMessage());
    }
}
 

Console du Navigateur :

Si vous utilisez des requêtes AJAX, vérifiez la console du navigateur pour d'éventuelles erreurs.

Exemple :

$.ajax({
    type: 'POST',
    url: 'URL_DE_VOTRE_AJAX',
    data: {
        ajax: true,
        action: 'updatePositions'
    },
    success: function (data) {
        console.log(data); // Afficher la réponse de l'AJAX dans la console
    },
    error: function (xhr, ajaxOptions, thrownError) {
        console.log(xhr.responseText); // Afficher les erreurs dans la console
    }
});
 

Assurez-vous de vérifier ces éléments pour résoudre le problème avec les logs dans votre méthode ajaxProcessUpdatePositions.

Bonne jouréne.

Link to comment
Share on other sites

  • 1 month 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...