Jump to content

Comment Obtenir Le Dernier Achat D'un Client À Partir D'un Autre Module ?


Recommended Posts

Bonjour,

 

Je travaille actuellement sur un site sous Prestashop 1.5.6.2.

Je voudrais afficher un formulaire de Commentaire Produit (normalement dans une page produit) dans le livre d'or une fois un achat effectué par un client. Pour cela, je dois récupérer dans le module guessbook les derniers achats d'un client.

J'ai donc essayé de récupérer ce que renvoie la fonction de Customer.php getBoughtProducts() :

$AllProducts=Context::getContext()->customer->getBoughtProducts();
$smarty->assign(array(
 [...]
'allProducts' => $AllProducts
)); 

Et dans thèmes/guessbook.tpl

{if isset($allProducts)}
	{foreach from=$allProducts item=product name=LoopProducts}
              //Affichage du formulaire
	{/foreach}
{/if}

Mais voilà, la condition {if isset($allProducts)} ne passe même pas, ce qui veut dire que je ne récupère absolument rien...

J'ai essayé de récupérer autre chose de la classe Customer.php, comme l'id ou la fonction isLogged(true), mais rien n'y fait !

J'ai notamment activé le mode debug, aucune erreur ne ressort...

Quelqu'un aurait une idée ?

 

PS : Le module ProductComments est attaché au Livre d'Or par les hook.

Edited by emucignato (see edit history)
Link to comment
Share on other sites

si tu rajoutes dans le php (dans "$smarty->assign(array(..." )
'test' => 'xxx'
 

et que tu n'a pas "test" dans la popup smarty (alors que le tpl est bien chargé, tu vois l'HTML), ça veux dire que tu assignes les variables après le tpl, il est donc logique de ne pas les avoir dans le tpl et dans la popup smarty, ceci peut être vérifié en mettant le  {debug} dans le footer. 

Link to comment
Share on other sites

C'est logique, je n'y avais pas pensé. Mais, même en rajoutant cette variable 'test' => 'xxx' dans mon array, en faisant le test de son existence dans le .tpl et en l'affichant si elle existe, elle ne s'affiche pas non plus, ni dans l'HTML, ni dans le debug, que j'ai positionné plus bas.

Et la variable $allProducts n’apparaît toujours pas...

Link to comment
Share on other sites

Le plus simple est vraiment de chercher dans la bdd

SELECT od.product_id, od.product_attribute_id
FROM ps_orders o
LEFT JOIN ps_orders o2 on o2.id_customer = o1.id_customer and o2.id_order > o1.id_order
INNER JOIN ps_order_detail od on od.id_order = o.id_order
WHERE o.id_customer = <id_customer>
AND o2.id_order is null
Link to comment
Share on other sites

Je veux bien interroger la base de donnée, mais sans pouvoir récupérer l'ID du client, je ne peux rien faire. La ligne suivante ne fonctionne pas :

Context::getContext()->customer->id;

Tout comme

Context::getContext()->customer->getBoughtProduct();

Ou

Context::getContext()->customer->getStats();
Edited by emucignato (see edit history)
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...