Jump to content

id_cart toujours à 0


Recommended Posts

Bonjour,

 

Pour un développement très spécifique sur prestashop 1.5, j'aurai besoin d'ajouter des produits au panier depuis une page que j'ai moi même développé. J'ai donc utiliser la fonction updateQty qui se trouve dans la classe Cart. Cependant, le produit n'est pas rajouter entièrement au panier, j'ai uniquement un enregistrement dans la table ps_cart_product avec l'id cart à 0. Auriez vous des explications a me fournir.

 

Je vous remercie.

Share this post


Link to post
Share on other sites

Voici le bout de code.

 

$cart = new Cart();

$quantity = 1;

$id_product = 2;

$cart->id_customer = $id_customer;

$cart->updateQty($quantity, $id_product, $id_product_attribute = NULL, $operator = 'up');

 

La fonction ne prend pas en paramètre d' id_customer.

 

Cordialement.

Share this post


Link to post
Share on other sites

En fonction de ton code :

$cookieLifetime = (time() + (((int)Configuration::get('PS_COOKIE_LIFETIME_FO') > 0 ? (int)Configuration::get('PS_COOKIE_LIFETIME_FO') : 1)* 3600));
 $cookie = new Cookie('ps', '', $cookieLifetime);
$id_cart = $cookie->__get('id_cart');
$id_lang =$cookie->__get('id_lang);
$cart = new Cart($id_cart,$id_lang);

 

Normalement tout est dans le cookie :)

 

Bon dev

Share this post


Link to post
Share on other sites

Bonjour,

Ok pas de chance j'ai voulu trop bien faire en indiquant $id_lang pour l'objet Cart.

Ca déclenche une erreur Sql : la table cart_lang n'existe pas. <_<

 

Alors maintenant si tu mets ce code dans un fichier à la racine de ton site :

<?php
require(dirname(__FILE__).'/config/config.inc.php');
$cookieLifetime = (time() + (((int)Configuration::get('PS_COOKIE_LIFETIME_FO') > 0 ? (int)Configuration::get('PS_COOKIE_LIFETIME_FO') : 1)* 3600));
$cookie = new Cookie('ps', '', $cookieLifetime);
$id_cart = $cookie->__get('id_cart');
var_dump($id_cart);

$id_lang =$cookie->__get('id_lang');
var_dump($id_lang);
$cart = new Cart($id_cart);

var_dump($cart);

 

Tu auras tout ce qu'il te faut, (mets quelque chose en panier pour etre sur d'avoir un id_cart.

 

Bon dev

Share this post


Link to post
Share on other sites

J'ai toujours le même soucis mais la ce bout de code fonctionne si l'utilisateur à déjà mis quelque chose dans son panier ? Mais si c'est la première dois qu'il arrive sur la boutique comment lui générer un id_cart ?

 

Je précise c'est un ajout de produit au panier pour la première fois.

 

Je te remercie.

Share this post


Link to post
Share on other sites

Bien vu,

 

Il faudrait voir dans le CartController pour l'ajout avec création du panier, je m'en sert ça fonctionne sans problème.

 

Par contre un truc que j'aurai du demander avant :

Ton code il est dans quoi ? Un module, un controller, une page php sans rapport avec PS, dans l'équivalent d'un site externe ?

 

Ca va marcher ;)

Share this post


Link to post
Share on other sites

Mon code est dans une page externe qui n'a aucun rapport avec prestashop mais j'utilise certaine classe de prestashop dans mon code. Si je comprend bien il y a une fonction dans le CartController qui peu me permettre de créer un panier sans utiliser la fonction updateQty ?

 

Merci.

Share this post


Link to post
Share on other sites

Ouille,

 

Là il va falloir ré étudier le problème.

Comment veux tu ajouter dans le panier :

- via ajax ?

- par un lien ?

- par l'envoi d'un formulaire ?

 

On est d'accord que l'article existe déjà dans prestashop ?

Share this post


Link to post
Share on other sites

Les articles existe bien dans prestashop. J'ai développé un configurateur ou l'utilisateur sélectionne des options pour avoir un produit final. Au final j'ai donc les id_produits ainsi que les quantité que l’utilisateur à choisie mais la ou je bloque c'est comment les transmettre au panier puis qu'il soit redirigé par la suite vers le panier.

 

Merci

Share this post


Link to post
Share on other sites

Ok, mais le problème c'est le contexte à partir duquel tu veux ajouter tes produits et c'est aussi tes choix de présentation qui vont imposer tel ou tel façon d'utilisation du code.

 

- Tes visiteurs sont forcément passés par la partie prestashop ? : c'est bon ils ont un cookie, on peut faire une requete ajax sinon un simple lien avec l'id_product peut suffire

http://127.0.0.1/prestashop_site/cart.php?qty=1&id_product=80&add

Edited by math_php (see edit history)

Share this post


Link to post
Share on other sites

Au départ, il arrive sur une page d'identification, après identification ils ont le choix soit d'aller sur le configurateur soit 'aller sur la boutique. Donc le cookie est bien crée. Ce qui est complexe ici c'est qu'il a pas qu'un seul produit c'est plusieurs options qui sont considérés dans prestashop comme des produits.

 

N'hesite pas si tu a besoin de plus d'information et merci surtout.

Share this post


Link to post
Share on other sites

Allez ça va marcher.

 

As tu une démo en ligne ? Si c'est ultra confidentiel envoi moi le lien en message privée.

 

Donc tu es sur que tes clients on un cookie prestashop, ça c'est bon. Apres tu sais faire un lien ou un bouton pour lequel dynamiquement en javascript tu vas modifier l'url pour que ça dirige le client vers le panier avec le bon id_produit ?

 

Je t'ai envoyé ma démo en message privée.

 

objectif : on trouve la solution cette aprem

Share this post


Link to post
Share on other sites

Oui les client après identification on bien un cookie presatshop mais dans le cookie aucun id_cart n'apparait donc ce que je veux juste c'est générer cet id. Mon but est de ne pas me taper les requêtes SQL pour générer mon panier. Est ce que quand le client se connecte un id_cart doit se générer automatiquement ?

Share this post


Link to post
Share on other sites

Non Prestashop ne crée pas un id_cart pour chaque visiteur, il ne le crée que si le visiteur ajoute un article.

Ton visiteur peut arriver sur le site, repartir de suite, il n'aura pas d'id_cart.

 

Examine le lien de l'ajout panier dans le fonctionnement standard de prestashop et essaye de construire le même.

Tu n'auras rien de plus à faire. Par défaut ajax récupére le clic et joue une animation, mais le lien est aussi valide pour diriger vers le panier tout en ajoutant.

Edited by math_php (see edit history)

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
 Share

×
×
  • Create New...

Important Information

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