Prestashop : Mise à jour ou enregistrement impossible d’un produit

Retrouvez les actualités de Vincent Guesné | Veille techno sécurisée, passionné et presque pas chiant

Tutoriel : Mise a jour des produits / corrections du bug

Prestashop : Mise à jour ou enregistrement impossible d’un produit

Si depuis quelques jours, tu remarques un problème de mise à jour des produits Prestashop, cet article devrait t’aider à comprendre et corriger le problème.

Le bug de mise à jour des produits touche toutes les versions de Prestashop (de 1.5 à 1.6.1.7), il sera apparement corrigé dans les version 1.6.1.8 et dans la 1.7 (j’ose espérer).

Mise à jour :

La 1.6.1.8 ne semble pas épargné 🙁

Il apparait avec les derniers mises à jour des navigateurs comme la version de chrome 54.0

Un topic (un poil technique) sur : pourquoi utilisez des requêtes asynchrone

Exit les requêtes synchrone dans Prestashop :

Prestashop utilise des requetes synchrone pour le fonctionnement du back-office, mais ces dernières sont depuis 2012 déprécié par les navigateurs WEB comme Google Chrome / Firefox…

Chrome d’ailleurs, indique dans la console javascript (Clic droit > Inspecter > Console) que les requêtes synchrone sont dépréciés car elles jouent un rôle négatif sur l’expérience utilisateur.

 

Impossible de mettre a jour produit prestashop

Impossible de mettre a jour produit prestashop

 

Le message est clair mais on ne s’attendait pas un à devoir corriger d’urgence les boutiques prestashop. J’ai eu connaissance de ce bug par un client qui ne pouvait plus enregistrer ces produits, enfin c’était même plus capricieux que ça, car le bug semblait être aléatoire. Il pouvait parfois mettre à jour un produit alors que genre 1 fois sur 4 ça ne fonctionné pas… pire encore certain de ses employés pouvait enregistrer des produits alors que d’autres ça ne pouvait rien faire.

 

Mise à jour :
PrestaEdit m’indique que le fait de cliquer sur le mot “sauvegarder” permet de bien enregistrer malgré le bug alors que si tu cliques sur le bouton, ça ne marche. D’ou le côté aléatoire des tests.

 

 

J’ai tout d’abord pensé à un problème de cache… mais rien de se côté là. J’ai fini par perdre mes derniers cheveux, lorsque AtchWork (membre de la communauté Prestashop) m’a orienté vers le topic du forum :

https://www.prestashop.com/forums/topic/563951-probl%C3%A8me-enregistrer-et-rester/

Problème identifié / Fix à appliquer :

Le problème est donc identifié, il faut virer les requêtes synchrone de Prestashop (back-office) pour les remplacer par des asynchrones… ça semble logique comme ça mais c’est parfois pas si simple 🙂

 

Un pull-request à été proposé sur la branche Github de prestashop :

https://github.com/PrestaShop/PrestaShop/pull/6749 – 9 fichiers sont à modifier pour corriger ce bug.

/!\ Attention, ces fichiers ne concerne que les versions 1.6.1.0+ de prestashop. Les version 1.6.0.0 -> 1.6.0.9 ont une arborescence légèrement différentes.

Télécharger le zip des fichiers à remplacer ici :

Prestashop version (supérieur à) 1.6.1.0 :

prestashop-fichiers-1-6-1-0-et-superieur

Prestashop version 1.6.0.0 a 1.6.0.9 :

prestashop-fichiers-1-6-0-9-et-inferieur

 

Il te suffit de remplacer les fichiers de du dossier admin-dev dans ton dossier adminXYZ

et de remplacer les dossier JS et classes à la racine de ton Prestashop. Normalement, ton filezilla (ou autre) doit te demander si tu souhaites remplacer les fichiers sources par les nouveaux : OUI

C’est fini ! Il y a plus qu’a mettre à jour tes produits 😉

 

Comments: 10

  1. Philippe says:

    Petit retour d’expérience sur 1.6.1.8,

    je n’ai pas pu remplacer l’un des 3 fichiers (en l’occurence tree_toolbar_search.tpl) car dans la 1.6.1.8, il ne semble pas exister. Son nom a dû changer et j’ai pas pris le temps de faire un diff pour voir la modif à opérer.
    Mais l’essentiel est que ===> CA MARCHE !

    Grand merci, cette sauvegarde aléatoire me rendait dingue.
    Au passage c’est le genre de bug qui m’a toujours fait flipper sur PS, qui reste vraiment super bien sur plein d’aspects (j’adore PS).

  2. RobbStark says:

    Bonjour à vous,
    je m’explique : j’ai une boutique qui tourne sur la version 1.6.0.9 mais suite aux fameux bugs du bouton Enregistrer sur les fiches produits à cause de la nouvelle politique des navigateurs qui bloque les requêtes synchrones, j’ai voulu migrer vers la version 1.6.1.9 mais une fois mise à jour, la boutique ne fonctionne plus (dans l’admin les sous menus des catégories n’apparaissent plus et un message d’erreur serveur apparaît) donc je suis revenu à la version précédente.
    J’ai pu voir qu’il existait un patch correctif pour solutionner le bug du bouton enregistrer lorsqu’on veut mettre à jour ou créer un produit : je l’ai mis mais le bug persiste malheureusement.

    Donc je vous avoue que j’ai plus trop de solutions si une personne a connu cette impasse et qu’elle souhaite m’aider je suis preneur 🙂
    Merci à vous.
    Cordialement.

    • Vincent says:

      Bonjour RobbStark,

      Est ce que lorsque tu clics droit sur ta page > Inspecter dans l’onglet console, tu as le message qui parle de requête synchrone et que c’est déprécié ?

      Si c’est le cas, le fix n’a pas bien été appliqué. Vérifie que les 9 fichiers ont bien été modifié

      https://github.com/PrestaShop/PrestaShop/pull/6749

      Tu peux les faire un par un pour être sur 😉

    • RobbStark says:

      Je vous remercie pour votre réponse rapide.

      Oui lors de l’inspection de l’élément, j’ai bien le message indiquant la requête synchrone.

      Sur le lien que vous m’avez donné c’est pour les versions 1.6.1.x ? Car je suis sur la 1.6.0.9. J’avais téléchargé auparavant le lien du patch présent sur votre blog pour ma version.

      Cordialement.

    • RobbStark says:

      Désolé pour le double post.
      J’ai mis le patch correspondant à ma version.
      A présent j’ai ce message lorsque je consulte la console :
      “Uncaught ReferenceError: mod_evasive is not defined(…)”

    • Vincent says:

      Le lien est effectivement pour la version 1.6.1.X mais il faut adapter les patchs a la version 1.6.0.9.
      Si le fichier cible ne se trouve pas sur votre version,faut retrouver le fichier correspond (qui doit avoir le même nom) mais pas forcément dans le dossier.

      Pour l’erreur au niveau de mod_evasise,
      Juste avant la condition

      if (mod_evasive)

      ajouter juste avant mod_evasive = false;

  3. RobbStark says:

    Je suis reparti de zéro, j’ai changé manuellement fichier par fichier comme vous me l’aviez conseillé. La console m’affiche cette fois :
    “ReferenceError: tinyMCE is not defined[En savoir plus] tinymce.inc.js:44:2”

Add your comment