Jump to content
Sign in to follow this  
Nagase

[résolu] Id_cart? oui mais...

Recommended Posts

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!

Share this post


Link to post
Share on other sites

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);

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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;

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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;

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Ok merci! je cherche aussi de mon coté mais ça fait un moment que je cherche et je n'est pas trouvé grand chose :(

Share this post


Link to post
Share on other sites

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));

Share this post


Link to post
Share on other sites

+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);

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 !

Share this post


Link to post
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
Sign in to follow this  

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More