guilli Posted June 1, 2011 Share Posted June 1, 2011 Bonjour,Je voudrais dans un fichier tpl afficher le panier du client.Plutôt que de réinventer la roue je voudrais reprendre le panier telle qu'il apparait sur la page "shopping-cart".tplJe reprends donc le code tous est ok, si ce n'est que je n'arrive pas à récupérer le contenu du panier client.Dans "shopping-cart.tpl" le panier est récupéré dans la variable $product mais je ne trouve pas comment assigner le contenu du panier client dans cette variable dans mon propre fichier tpl.Dans shopping-cart.tpl: {foreach from=$products item=product} {if $product.id_product == $lastProductAdded.id_product AND (!$product.id_product_attribute OR ($product.id_product_attribute == $lastProductAdded.id_product_attribute))} etc. $products comprend bien le contenu du panier.Si j'applique le même code dans mon tpl $products est vide.merci Link to comment Share on other sites More sharing options...
DevNet Posted June 1, 2011 Share Posted June 1, 2011 Bonjour,Il faut assigner à votre tableau smarty {$products} le contenu du panier, en php avant de solliciter votre tpl.Bien cordialement Link to comment Share on other sites More sharing options...
guilli Posted June 1, 2011 Author Share Posted June 1, 2011 Merci pour ton aide.Concrètement que dois-je mettre dans mon fichier php ? Je n'arrive pas à trouver en me servant de shopping-cart comme exemple. Link to comment Share on other sites More sharing options...
DevNet Posted June 1, 2011 Share Posted June 1, 2011 Tout dépend son contenu.Est-ce une classe ? d'un module ? une page d'un controlleur ?Il existe une batterie de méthode de classes existantes dans le noyau pour récupérer les infos du panier, mais il faut d'abord connaitre votre code pour vous répondre. Link to comment Share on other sites More sharing options...
guilli Posted June 1, 2011 Author Share Posted June 1, 2011 Il faut que dans mon tpl (en fait il s'agit de my-account.tpl) je puisse me servir de $products.Je sais que $products peut être remplie de la manière suivante : $products = $cart->getProducts();Si je mets $products = $cart->getProducts(); dans my-account.php je récupère bien les bonnes données (print_r($products).Mais je ne sais pas comment récupérer cette valeur dans my-account.tpl et si je dois mettre $products = $cart->getProducts(); dans my-account.php. Link to comment Share on other sites More sharing options...
Broceliande Posted June 1, 2011 Share Posted June 1, 2011 Il faut que dans mon tpl (en fait il s'agit de my-account.tpl) je puisse me servir de $products.Je sais que $products peut être remplie de la manière suivante : $products = $cart->getProducts();Si je mets $products = $cart->getProducts(); dans my-account.php je récupère bien les bonnes données (print_r($products).Mais je ne sais pas comment récupérer cette valeur dans my-account.tpl et si je dois mettre $products = $cart->getProducts(); dans my-account.php. Comme le dit DevNet , tu dois le transmettre ensuite à smarty :(global $smarty; //nécessaire si pas déja dans ton hook) $smarty->assign('products',$products); Après pour manipuler ton tableau de produits dans le tpl , tu n'as plus qu'à lorgner du côté de order-detail.tpl , par exemple Link to comment Share on other sites More sharing options...
guilli Posted June 6, 2011 Author Share Posted June 6, 2011 De retour d'un pont profitable :-) (et courage pour ceux qui ont travaillé)En suivant vos conseils, voila ce que j'ai fais:dans my-account.php require(dirname(__FILE__).'/config/config.inc.php'); ControllerFactory::getController('MyAccountController')->run(); //debut rajout global $smarty; $products = $cart->getProducts(); $smarty->assign('products',$products); //fin rajout dans my-account.tpl Test : {$products} {foreach from=$products item=product name=products} {$product.product_reference} {/foreach} Malheureusement, cela ne marche pas, j'obtiens : Test : Visiblement aucune valeur n'est récupérée. A tout hasard, je précise que je suis connecté en tant que client et que mon panier n'est pas vide. Link to comment Share on other sites More sharing options...
Broceliande Posted June 6, 2011 Share Posted June 6, 2011 Bonjour,Je suis étonné que tu n'aies pas eu de message d'erreur, car tu accèdes à $cart , c'est également une globale, il faut donc la déclarer aussi : global $smarty, $cart; Il faut faire de même si tu souhaites utiliser $cookies etc ...pour chaque variable globale.Je te suggère d'activer l'affichage des erreurs dans /config/config.inc.php , le temps de ton développement.Car ici tu aurais eu un warning à mon sens indiquant un truc du genre '...calling ....method of a non object....' sur $cart Link to comment Share on other sites More sharing options...
guilli Posted June 6, 2011 Author Share Posted June 6, 2011 J'ai rajouté global $cart; dans my-account.php.Le résultat reste le même, le panier reste vide. Concernant l'affichage des erreurs, je l'ai activé dans config.inc.php(@ini_set('display_errors', 'on');mais je n'ai pas eu de message d'erreur et je n'en ai pas non plus maintenant après l'ajout de global $cart. Link to comment Share on other sites More sharing options...
guilli Posted June 6, 2011 Author Share Posted June 6, 2011 Si ça peut aider, j'ai rajouter {debug} dans mon tpl pour voir si {$products} existe, et ce n'est pas le cas !Donc visiblement je dois perdre mon assignation quelquepart mais ou ? Link to comment Share on other sites More sharing options...
Broceliande Posted June 6, 2011 Share Posted June 6, 2011 Si ça peut aider, j'ai rajouter {debug} dans mon tpl pour voir si {$products} existe, et ce n'est pas le cas !Donc visiblement je dois perdre mon assignation quelquepart mais ou ? Je viens surtout de réaliser que tu utilisais un controller ...Dans ce cas tu dois renseigner smarty dans le controller lui même (fonction process() ).Le plus simple est de créér ton propre controller Je te propose un controller en pièce jointe qui fait ce que tu demandes, il suffit de le mettre dans le dossier /controllersPar contre il faut changer ton appel dans ton php racine : require(dirname(__FILE__).'/config/config.inc.php');ControllerFactory::getController('MyCustomController')->run();MyCustomeController.php Link to comment Share on other sites More sharing options...
guilli Posted June 6, 2011 Author Share Posted June 6, 2011 Merci beaucoup pour ton aide.Tous marche parfaitement maintenant.Merci pour le temps que tu m'as accordé.Bonne journée Link to comment Share on other sites More sharing options...
Tramber Posted June 25, 2012 Share Posted June 25, 2012 Bonjour Guilli, je cherche à faire la même chose, enfin... J'aimerai créer une page où le client une fois connecté puise voir ses différents paniers réalisés et pouvoir passer commande en choisissant son panier. Sous le principe de "re-commander". J'ai suivi les instructions ci-dessus, mais sur ma version 1.4.8.2, j'ai une page blanche qui s'affiche... As-tu réussi et est-ce que je cherche à faire se rapproche de se que tu as fait ? Merci d'avance ! 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