Nagase Posted January 25, 2012 Share Posted January 25, 2012 Ou comment faire un titre explicite... Bonjour ! Je suis entrain de développer un module de personnalisation pour prestashop mais j'ai un petit soucis, pour passer la photo de personnalisation en back office j'utilise un fichier texte qui à pour nom exemple : 9-10-23.txt 9 étant le numéro du panier(provisoire) 10 le nom du produit et 23 sa déclinaison , bref Je récupère le 9 dans mon php comme ça : $idcart = $cookie->id_cart; seulement ça pose problème dans le cas où je fais un achat, je ne quitte pas le site et je refais un achat, dans mon deuxième achat mon code ne récupère aucun id, surement du au fait qu'il prenne cette id dans les cookies et qu'ils n'ont peut être pas été rafraichi ou je ne sais quoi. En gros ma question est : y'aurait il moyen depuis la page php du module de recuperer l'id du cart temporaire autrement que par les cookies !? merci d'avance! Link to comment Share on other sites More sharing options...
Broceliande Posted January 25, 2012 Share Posted January 25, 2012 Ou comment faire un titre explicite... Bonjour ! Je suis entrain de développer un module de personnalisation pour prestashop mais j'ai un petit soucis, pour passer la photo de personnalisation en back office j'utilise un fichier texte qui à pour nom exemple : 9-10-23.txt 9 étant le numéro du panier(provisoire) 10 le nom du produit et 23 sa déclinaison , bref Je récupère le 9 dans mon php comme ça : $idcart = $cookie->id_cart; seulement ça pose problème dans le cas où je fais un achat, je ne quitte pas le site et je refais un achat, dans mon deuxième achat mon code ne récupère aucun id, surement du au fait qu'il prenne cette id dans les cookies et qu'ils n'ont peut être pas été rafraichi ou je ne sais quoi. En gros ma question est : y'aurait il moyen depuis la page php du module de recuperer l'id du cart temporaire autrement que par les cookies !? merci d'avance! Salut, avant de traiter le panier , assure toi qu'il soit stocké , même si temporaire : $cart->update(true); Link to comment Share on other sites More sharing options...
Nagase Posted January 25, 2012 Author Share Posted January 25, 2012 Merci pour ta réponse ! seulement je ne sais pas l’implanter ! j'ai essayer tout un tas de truc et je vient de me rendre compte que quand on rafraichi la page (F5) la le numéro de panier se met à jour !(j'ai essayer de mettre un reload en jquerry mais ça ne fais pas le même effet!) et je sent que ton code est ce qu il me faut mais je n'arrive pas à l’implémenter dans mon code il ne connais pas $cart or j'ai vu dans le cart.php qu'il y avais effectivement une fonction update ! Peut tu m'en dire un poil plus? Merci d'avance! Link to comment Share on other sites More sharing options...
Broceliande Posted January 25, 2012 Share Posted January 25, 2012 ok bon je te cite donc : Je récupère le 9 dans mon php comme ça : $idcart = $cookie->id_cart; J'ose croire qu'avant cette ligne tu as bien un global $cookie; sans quoi bien sûr ça marche pas. Donc au pire on force l'update panier juste avant d'en avoir besoin dans ton code , qui devient : global $cart; $cart->update(true); $idcart = $cookie->id_cart; Link to comment Share on other sites More sharing options...
Nagase Posted January 25, 2012 Author Share Posted January 25, 2012 Merci! A priopri ça ne fonctionne pas , toujours aucun id de cart provisoire , Je ne sais pas si c'est lié mais c'est pareil au niveau de l'installation, quand j'installe mon module je suis obligé d'appuyer sur f5 pour voir qu'il est installer idem pour la désinstallation or sur les autres module on appuie sur désinstaller ça rafraichi et ça marque module désinstaller, peut être que le problème vient de plus loin j'ai peut être raté quelque chose dans la conception de mon module... En tout cas merci pour tes réponses! Link to comment Share on other sites More sharing options...
Broceliande Posted January 25, 2012 Share Posted January 25, 2012 Merci! A priopri ça ne fonctionne pas , toujours aucun id de cart provisoire , Je ne sais pas si c'est lié mais c'est pareil au niveau de l'installation, quand j'installe mon module je suis obligé d'appuyer sur f5 pour voir qu'il est installer idem pour la désinstallation or sur les autres module on appuie sur désinstaller ça rafraichi et ça marque module désinstaller, peut être que le problème vient de plus loin j'ai peut être raté quelque chose dans la conception de mon module... En tout cas merci pour tes réponses! ah je vois, essaye ça plutôt et oublie le cookie, qui n'est forcément pas à jour: global $cart; if ($cart->id == null) $cart->update(true); $idcart = $cart->id; Link to comment Share on other sites More sharing options...
Nagase Posted January 25, 2012 Author Share Posted January 25, 2012 Toujours pas je ne suis peut être pas au bon endroits, j'ai prit exemple sur le JC_freeblock je fait donc toute mes communication avec smarty dans le hook home comme ceci public function hookHome($params) { global $smarty, $cart; if ($cart->id == null) $cart->update(true); $idcart = $cart->id; $smarty->assign(array( 'idcart' =>$idcart, )); } Merci du mal que tu te donne pour moi ! Link to comment Share on other sites More sharing options...
Broceliande Posted January 25, 2012 Share Posted January 25, 2012 mince :s bon je vais tester ça en local et revenir avec la soluce propre , dès que j'ai 5 mn Edit : j'ai aussi besoin d'avoir le panier à jour dans deux de mes modules , mais il me semble bien que c'était la méthode utilisée , donc dans ce cas c'est que ce n'est pas la methode update mais add qu'il faut appeler ... je vérifie dès que je peux Link to comment Share on other sites More sharing options...
Nagase Posted January 26, 2012 Author Share Posted January 26, 2012 Ok merci! je cherche aussi de mon coté mais ça fait un moment que je cherche et je n'est pas trouvé grand chose Link to comment Share on other sites More sharing options...
prestabenn Posted January 27, 2012 Share Posted January 27, 2012 Essaye ca, pour créer le cookie global $cart; if (!isset($cart->id) OR !$cart->id) { $cart->add(); if ($cart->id){ $cookie->id_cart = (int)($cart->id); } } $smarty->assign(array('idcart'=>$idcart)); Link to comment Share on other sites More sharing options...
Broceliande Posted January 28, 2012 Share Posted January 28, 2012 +1 , j'ai a peu de chose près la même chose qui fonctionne bien : Edit : A noter que $cart est toujours 'set' , et que dans le cas ou le panier n'a pas encore été initialisé en bdd l'id est à null. global $cart,$cookie,$smarty; if($cart->id == null) { $cart->add(true); $cookie->id_cart=$cart->id; } $smarty->assign('idcart',$cookie->id_cart); Link to comment Share on other sites More sharing options...
Broceliande Posted January 28, 2012 Share Posted January 28, 2012 Pour l'explication, la méthode add() a pour effet d'enregistrer le panier dans la bdd et donc lui affecter un id. Ce qui est le plus important derrière est ce que donne prestabenn : l'affectation du nouvel id ainsi créé au cookie, $cookie->id_cart=$cart->id; faute de quoi un nouvel id sera créé à chaque chargement . La globale cart est instanciée par le frontController sur l'id stocké dans le cookie... Link to comment Share on other sites More sharing options...
Nagase Posted January 30, 2012 Author Share Posted January 30, 2012 Merci beaucoup, à priori ça marche sauf dans certains cas qui je pense ne pourront jamais être résolu exemple que j'ai tester : je prend dans mon panier je paye par chèque et une fois le paiement valide je clic sur le produit affiché dans les meilleurs vente.et je clic sur ajouter au panier et la pas de numéro de cart ! bref, dans mon cas ce n'est pas problématique et je vais négliger ça donc voila ! Je met le sujet en résolu merci ! Edit : autant pour moi,J'ai ecrasé idcart comme un benêt ! la solution est bien la bonne. Parfait encore merci à vous deux ! 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