emucignato Posted March 10, 2016 Share Posted March 10, 2016 (edited) 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 March 10, 2016 by emucignato (see edit history) Link to comment Share on other sites More sharing options...
coeos.pro Posted March 10, 2016 Share Posted March 10, 2016 en php tu as'AllProducts' => $AllProductsmais dans le tpl tu utilisesallProducts Sinon rajoute {debug} dans ton fichier tpl pour voir les variables et leurs valeurs Link to comment Share on other sites More sharing options...
emucignato Posted March 10, 2016 Author Share Posted March 10, 2016 Pardon, c'est une erreur de recopiage de ma part, mais j'ai bien allProducts des deux côtés (je le corrige). Je viens d'essayer de mettre {debug} dans mon fichier, les variables sont toutes là... sauf bien sur, $allProducts... Link to comment Share on other sites More sharing options...
coeos.pro Posted March 10, 2016 Share Posted March 10, 2016 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 More sharing options...
emucignato Posted March 10, 2016 Author Share Posted March 10, 2016 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 More sharing options...
coeos.pro Posted March 10, 2016 Share Posted March 10, 2016 dans ton php, rajoute un echo 'zzz'; et ensuite regarde dans le code de la page si tu as zzz. Link to comment Share on other sites More sharing options...
emucignato Posted March 10, 2016 Author Share Posted March 10, 2016 Non, je n'ai rien qui s'affiche, ni en HTML, ni dans le code source, ni dans le debug. Je dois en conclure qu'il y a un problème au niveau du $smarty->assign ? Link to comment Share on other sites More sharing options...
coeos.pro Posted March 10, 2016 Share Posted March 10, 2016 ça veux dire que le echo 'zzz'; est dans une fonction qui n'est pas appelée Link to comment Share on other sites More sharing options...
emucignato Posted March 10, 2016 Author Share Posted March 10, 2016 Impossible, je l'ai mis dans la même fonction qui appelle le $smarty->assign() ^^ Link to comment Share on other sites More sharing options...
doekia Posted March 10, 2016 Share Posted March 10, 2016 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 More sharing options...
emucignato Posted March 10, 2016 Author Share Posted March 10, 2016 (edited) 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 March 11, 2016 by emucignato (see edit history) 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