xEL Posted September 10, 2013 Share Posted September 10, 2013 Bonjour Après des longs recherches sur les forum et le net avec aucune solution je m'adresse à vous pour petit aide concernant l'affichage du hook displayInvoiceactuellement je suis en cours de développer un module de paiement, la partie front office tous ce passe bien avec l'enregistrement de tout paiement effectue par un client. Mon soucis c'est que je veux afficher dans le details commande en back-office un hook displayInvoice contenant des informations sélectionner à partir d'une table dans la classe module j'ai ajouté une function displayInvoice ci-desous function displayInvoice($params) { $id_order = $params['id_order']; global $smarty; $paymentdetails = $this->readPaymentdetails($id_order); $smarty->assign(array( 'montant' => $paymentdetails['montant'], 'email' => $paymentdetails['emailclient'], 'status' => $paymentdetails['status'], 'id_order' => $id_order, 'this_page' => $_SERVER['REQUEST_URI'], 'this_path' => $this->_path, 'this_path_ssl' => Configuration::get('PS_FO_PROTOCOL').$_SERVER['HTTP_HOST'].__PS_BASE_URI__."modules/{$this->name}/")); return $this->display(__FILE__, 'invoice_block.tpl'); } la fonction displayInvoice fais appele à la fonction readPaymentdetails ci-dessous function readPaymentdetails($id_order) { $db = Db::getInstance(); $result = $db->ExecuteS(' SELECT montant ,emailclient ,status FROM `ps_bingapaiement` b , `ps_orders` o WHERE b.idcommande=o.id_cart AND o.id_order='.intval($id_order).'; '); return $result[0]; } le fichier invoice_block.tpl se trouve dans le même répertoire que le fichier classe du module Merci d'avance Link to comment Share on other sites More sharing options...
J. Danse Posted September 10, 2013 Share Posted September 10, 2013 Et, vu qu'il n'y a pas de suite au message, cela ne fonctionne pas ? Quelle version de PrestaShop ? 1.4, je suppose ? Link to comment Share on other sites More sharing options...
xEL Posted September 10, 2013 Author Share Posted September 10, 2013 (edited) Bonjour J.Danse Je suis sur prestashop 1.5.4.0 et voila le code de mon fichier invoice_block.tpl <fieldset style="width: 400px;"> <legend> {l s='Informations details paiement'} </legend> <div id="info" border: solid red 1px;"> <table> <tr><td>Montant:</td> <td>{$montant}</td></tr> <tr><td>Email:</td> <td>{$emailclient}</td></tr> <tr><td>Status:</td> <td>{$status}</td></tr> </table> </div> </fieldset> Edited September 10, 2013 by xEL (see edit history) Link to comment Share on other sites More sharing options...
J. Danse Posted September 10, 2013 Share Posted September 10, 2013 Ah. J'ai supposé 1.4 car votre code est purement "1.4 like", c'est pour ça. Mais, ne vous tracassez pas, cela doit aussi fonctionner pour la 1.5. Cependant, n'ayant pas le temps de faire un copier/coller de test voir le soucis, quel est ce dernier ? Je n'ai toujours pas lu le problème... Je présume, mais sans certitudes, qu'il n'y a pas d'affichage correspondant ? Avez-vous vidé le cache (ou le désactiver, temporairement) éventuellement ? Link to comment Share on other sites More sharing options...
xEL Posted September 10, 2013 Author Share Posted September 10, 2013 J'ai vidé le cache mais aucun block ne s'affiche au detail commande du back-office Link to comment Share on other sites More sharing options...
coeos.pro Posted September 10, 2013 Share Posted September 10, 2013 dans la classe module j'ai ajouté une function displayInvoice ci-desous donc tu as fait un override, mais je vois : return $this->display(__FILE__, 'invoice_block.tpl'); et le fichier invoice_block.tpl se trouve dans le même répertoire que le fichier classe du module donc à mon avis ça va bloquer, il ne peut pas trouver ce fichier tpl et ceci ne va pas fonctionner : ."modules/{$this->name}/"))sauf si tu veux afficher {$this->name} en "clair" une question toute bête, ton module est bien bien greffé sur le hook displayInvoice ? pour finir, au lieu de faire : $result = $db->ExecuteS et ensuite return $result[0]; il vaut mieux faire : function readPaymentdetails($id_order) { return Db::getInstance()->getRow(' SELECT `montant`, `emailclient`, `status` FROM `'._DB_PREFIX_.'_bingapaiement` b , `'._DB_PREFIX_.'_orders` o WHERE b.`idcommande` = o.`id_cart` AND o.`id_order` = '.(int)$id_order); } un peu de lecture : http://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/ et en 1.5 on évite les GLOBAL, donc tu peux changer $smarty->assign( par $this->smarty->assign( et supprimer global $smarty; Link to comment Share on other sites More sharing options...
xEL Posted September 10, 2013 Author Share Posted September 10, 2013 Bonjour coeos.pro merci pour votre réponse oui effectivement mon module est bien greffé sur hook displayInvoice voilà mon code finale et ce dernier n'affiche rien :/ function displayInvoice($params) { $id_order = $params['id_order']; $paymentdetails = $this->readPaymentdetails($id_order); $smarty->assign(array( 'montant' => $paymentdetails['montant'], 'email' => $paymentdetails['emailclient'], 'status' => $paymentdetails['status'], 'id_order' => $id_order, 'this_page' => $_SERVER['REQUEST_URI'], 'this_path' => $this->_path, 'this_path_ssl' => Configuration::get('PS_FO_PROTOCOL').$_SERVER['HTTP_HOST'].__PS_BASE_URI__."modules/{$this->name}/")); return $this->display(__FILE__,"modules/{$this->name}/invoice_block.tpl"); } function readPaymentdetails($id_order) { return Db::getInstance()->getRow(' SELECT `montant`, `emailclient`, `status` FROM `'._DB_PREFIX_.'_bingapaiement` b , `'._DB_PREFIX_.'_orders` o WHERE b.`idcommande` = o.`id_cart` AND o.`id_order` = '.(int)$id_order); } Link to comment Share on other sites More sharing options...
coeos.pro Posted September 10, 2013 Share Posted September 10, 2013 commencez par mettre une bonne url : return $this->display(__FILE__, 'invoice_block.tpl"); et vous avez bien quelque chose comme : public function install() { if (!parent::install() OR !$this->registerHook('displayInvoice')) return false; //suite éventuelle du code d'installation } et vous avez essayé de mettre function hookdisplayInvoice($params) au lieu de function displayInvoice($params) Link to comment Share on other sites More sharing options...
xEL Posted September 10, 2013 Author Share Posted September 10, 2013 Oui tout est réglé j'ai bien mis public function install() { if (!parent::install() OR !$this->registerHook('displayInvoice') OR !$this->registerHook('payment') OR !$this->registerHook('paymentReturn')) return false; return true; } j'ai bien mis l'url mais au niveau de l'affichage rien ne s'affiche :/ Link to comment Share on other sites More sharing options...
xEL Posted September 11, 2013 Author Share Posted September 11, 2013 aucune réponse :/ sur je suis sur le points de rechercher page par page sur le forum avec aucune solution :/ 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