Jump to content

Perte des images categorie apres mise à jour


Recommended Posts

Bonjour,

 

Je suis en version 1.5 avec l'url rewriting activé.

Quand je modifie une categorie en choisissant une image, pas de problème.

Mais si je modifie une categorie qui a déjà une image, si je ne touche pas à l'image et que je valide la fiche, je perds l'image...

 

En désactivant l'url rewiting j'ai le même problème.

 

Une idée ?

 

Merci

 

Romuald.

Link to comment
Share on other sites

Il s'agit d'une mise a jour ou d'un simple upload d'image dans les catégories ?

Cela se produit lorsque l'on change quelque chose dans une catégorie.(Option simple upload d'image dans les catégories)

Alors on voit que l'image est perdue.

Nous sommes alors obligés d'uploader de nouveau l'image de la catégorie.

 

Idem pour les produits, les scenes... ou pas ?

Les produits non, c'est bien spécifique aux catégories.

Les scènes? Je ne vois pas de quoi vous voulez parler.

 

Et depuis l'import avez vous tester ?

Je pense que pour la plupart nous uploadons nos images via le bouton "Choisissez un fichier" du formulaire d'ajout / modification de catégories.

 

 

Si vous avez besoin d'autres précisions, n'hésitez pas.

Link to comment
Share on other sites

Oui c'est cela, mise à jour d'une famille uniquement.

 

Ex : je crée une famille en uploadant une image, c'est ok.

J'édite la famile, je ne touche pas à l'image (je corrige le nom de la famille par exemple), je valide => l'image à disparu.

 

Voila.

Link to comment
Share on other sites

Donc RomuGb et moi avons ce problème et par contre alibi a apparemment un problème aussi avec les produits

 

Bonjour,

 

j'ai exactement le même souci, très pénalisant car il faut uploader de nouveau l'image lorsqu'on modifie une fiche, aussi bien de catégorie que de produit...

Link to comment
Share on other sites

Correction, ça ne se produit pas pour les produits (dont les images ne sont pas gérées de la même manière), j'ai écris un peu vite, fin de journée...

Pour les catégories c'est le même problème que RomuGB, comme si le champ image étant vide était pris dans le traitement en ignorant qu'il y a déjà une image, du coup l'image est supprimée.

Link to comment
Share on other sites

C'est bon j'ai la solution !

 

Editer la page /controllers/admin/AdminCategoriesController.php

 

ligne 512, remplacer la ligne :

 if (Tools::isSubmit('forcedeleteImage') || isset($_FILES['image']))

 

Par :

 if (Tools::isSubmit('forcedeleteImage') || (isset($_FILES['image']) && !empty($_FILES['image']['name'])))

 

Sauver la page.

 

Et voila !!

 

Romuald

Link to comment
Share on other sites

Extra, je venais justement poster ma solution... qui n'est autre que la même ^^

 

A la petite différence que j'ai préféré passer par un override pour éviter les soucis sur les mises à jour.

 

C'est quand même étonnant que personne d'autre n'ai ce problème, perso j'utilise la 1.5.2.0.

Link to comment
Share on other sites

Oui bonne idée pour l'override Alibi, cependant j'espere que ce bug sera corrigé lors de la prochaine mise à jour, c'est pour cela que je n'ai pas utilisé l'override.

 

Sinon merci Ninja Of Web, vous avez l'air de bien vous y connaitre, normal pour un ancien de Prestashop, j'aurais un petit problème à vous présenter : sur mon site : www.easy-commerce.fr j'ai un pb avec le panier dans la colonne de droite. Quand j'y ajoute un article avec attribut tout se passe bien mais quand je le supprime il disparait bien de ma base de donnée mais il reste une ligne résiduelle dans le panier de droite alors que dans le panier du header tout est ok. Une personne m'a dit que c'etait un problème d'id et que les 2 paniers ne pouvaient pas être traités en même temps.... Je trouve ça bizarre. Quand pensez-vous ?

 

Merci pour votre aide.

 

Romuald.

Link to comment
Share on other sites

Oui bonne idée pour l'override Alibi, cependant j'espere que ce bug sera corrigé lors de la prochaine mise à jour, c'est pour cela que je n'ai pas utilisé l'override.

 

Je comprends, mais j'ai comme règle de ne jamais "espérer" une modification lors de la prochaine maj... Il vaut mieux prendre les devants, ça évite de devoir refaire des modifs déjà faites ;)

 

Pour le reste je ne peux pas aider, je n'ai pas encore attaqué la partir panier... good luck !

Link to comment
Share on other sites

Par contre, je préfère aussi faire des surcharges, pourrais-tu poser ta solution alibi?

J'ai écris comme suit, mais ça ne semble pas fonctionner.

<?php
class AdminCategoriesController extends AdminCategoriesControllerCore
{
public function postProcess()
{
 if (!in_array($this->display, array('edit', 'add')))
  $this->multishop_context_group = false;
 if (Tools::isSubmit('forcedeleteImage') || (isset($_FILES['image'])) && !empty($_FILES['image']['name']))
 {
  $this->processForceDeleteImage();
  if (Tools::isSubmit('forcedeleteImage'))
Tools::redirectAdmin(self::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminCategories').'&conf=7');
 }

 return parent::postProcess();
}
}

Link to comment
Share on other sites

Hum, ton code à l'air bon.

 

Voici ce que j'utilise pour faire le test :

 if (Tools::isSubmit('forcedeleteImage') || (isset($_FILES['image']) && !empty($_FILES['images'])))

Plutôt que d'aller chercher un élément spécifique du tableau je regarde si le tableau est vide ou non.

 

EDIT : on pourrait peut être même simplifier encore et ne faire que le test sur le remplissage du tableau, puisque le tableau est, lui, toujours passé, ce qui donnerait (pas testé) :

  	 if (Tools::isSubmit('forcedeleteImage') || !empty($_FILES['images']))

Edited by alibi (see edit history)
Link to comment
Share on other sites

Je précise donc pour les débutants, que j'ai supprimé dans "racine/controllers/admin/AdminCategoriesController" ligne 508 à 520 la fonction postProcess en entière :

public function postProcess()
{
 if (!in_array($this->display, array('edit', 'add')))
  $this->multishop_context_group = false;
 if (Tools::isSubmit('forcedeleteImage') || isset($_FILES['image']))
 {
  $this->processForceDeleteImage();
  if (Tools::isSubmit('forcedeleteImage'))
Tools::redirectAdmin(self::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminCategories').'&conf=7');
 }

 return parent::postProcess();
}

Et que je l'ai réécrite dans "racine/override/controllers/admin/AdminCategoriesController" :

<?php
class AdminCategoriesController extends AdminCategoriesControllerCore
{
public function postProcess()
{
 if (!in_array($this->display, array('edit', 'add')))
  $this->multishop_context_group = false;
 if (Tools::isSubmit('forcedeleteImage') || (isset($_FILES['image'])) && !empty($_FILES['image']['name']))
 {
  $this->processForceDeleteImage();
  if (Tools::isSubmit('forcedeleteImage'))
Tools::redirectAdmin(self::$currentIndex.'&token='.Tools::getAdminTokenLite('AdminCategories').'&conf=7');
 }

 return parent::postProcess();
}
}

Pourquoi tout ça? Pour faire de la surcharge en espérant que le problème sera corrigé dans la prochaine mise à jour. Et de plus, je ne perdrai pas mes modifications dans la prochaine mise à jour. Si je rencontre de nouveau le problème, j'aurai juste à supprimer de nouveau dans "racine/controllers/admin/AdminCategoriesController" la fonction post Process.

Link to comment
Share on other sites

C'est un cas spécifique.

 

Le fait d'utiliser le parent::nom_de_la_methode(); dans ton override, Fait que code va exécuter cette méthode aussi dans le fichier qui est overridé puis dans admincontroller.php

 

Donc ici voici l'ordre d'éxécution :

Override/controllers/admin/admincategory.php

controllers/admin/admincategory.php

Classes/controller/admincontroller.php

 

Loic.

Link to comment
Share on other sites

Oulala, là c'est moi qui n'y comprends plus rien...

 

J'ai vérifié et effectivement ça ne fonctionne pas non plus chez moi, les modifications que j'avais fait sur le fichier de base étaient peut être restées en cache.

 

Par contre je viens d'essayer différentes combinaisons avec le if(...) else return parent::postProcess(); mais rien n'y fait, ça ne fonctionne pas.

 

D'ailleurs pourquoi retourner chercher la fonction dans la classe parent, ça court-circuite forcément ce qui a été fait dans l'override non ? (d'où l'utilité du if je suppose mais du coup je vois comment l'implémenter pour que ça fonctionne).

Link to comment
Share on other sites

  • 1 month later...

Bonjour à tous,

 

J'ai eu le même problème sur un prestashop 1.5.2 je vous fait donc part de ma solution à mettre dans l'override:

 

 

<?php

class AdminCategoriesController extends AdminCategoriesControllerCore
{
   public function processForceDeleteImage(){
       if (Tools::isSubmit('forcedeleteImage') || (isset($_FILES['image']) && !empty($_FILES['images']))){
           $category = $this->loadObject(true);
           if (Validate::isLoadedObject($category))
               $category->deleteImage(true);
       }
   }
}

Link to comment
Share on other sites

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