Jump to content

[Résolu] Afficher le panier client dans un tpl


Recommended Posts

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

Je 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

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

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

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

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

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

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

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 /controllers

Par 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

  • 1 year later...

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

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