Jim & Nathi Posted July 16, 2016 Share Posted July 16, 2016 Bonsoir à tous c'est peu fière surtout après une soiree de recherche et après la lecture complète du tuto .... "Créer un module Prestashop" que je me permet de venir vous demander un renseignement ... voila, je suis on ne peux plus novice en réalisation PrestaShop et je réalise mon premier module! voila, j'aimerais faire passer l'id de l'utilisateur vers le tpl .... j'ai trouver ceci pour récupérer l'id_user => global $cookie; $user_id = $cookie->id_customer; mais derrière j'ai beau me tire les cheveux, je n'arrive pas à l'envoyer vers le .tpl voici mon le contenu de mon fichier display.php location : ../modules/MON_MODULE/controllers/front/display.php class galeriedisplayModuleFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); //$this->assign("test","Je suis une variable"); $this->setTemplate('display.tpl'); } } mon display.tpl est à la bonne place car je vois se qu'il y a inscrit dedant .... veuillez escuser ma novicitée! Link to comment Share on other sites More sharing options...
Jim & Nathi Posted July 17, 2016 Author Share Posted July 17, 2016 Bonjour à tous je rattaque avec mon problème! ( vu que j'en ai d'autre .... mais un à la fois) Bon, j'ai quand mêmes avancé depuis hier! ..... ouf .... je me suis rendu compte de se qu'était la variable $this ..... BHOUAAAA c'est de la balle! Mais encore faut t'il la maitriser! se qui n'est pas encore mon cas! Soit ... tout s'apprend! voici mon code => class galeriedisplayModuleFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->nathijetaime = 'tres fort'; //print_r($this); $this->setTemplate('display.tpl'); } } j'ai pas avancer des masse! bon j'airrive à ajouter des variables à la variable "$this" qui apperement, va vers mon tld j'ai également constater que l'id de l'utilisateur se trouvais dans la variable "$this" .... ici => protected 'context' => object(Context)[4] public 'cart' => object(Cart)[26] public 'id' => null public 'id_shop_group' => int 1 public 'id_shop' => int 1 public 'id_address_delivery' => int 0 public 'id_address_invoice' => int 0 public 'id_currency' => int 1 ======> public 'id_customer' => int 2 <====== J'ai bien essayer de la faire afficher comme ceci par exemple => var_dump($this->Context-Cart-id_customer); mais en vainq Enfain voila où j'en suis depuis hier Savez vous comment je peux décomposer cette Bombe! .... surtout dans le tpl .... Allais bonne journée à tous Link to comment Share on other sites More sharing options...
Jim & Nathi Posted July 17, 2016 Author Share Posted July 17, 2016 Bha noooon ..... je me suis dit, je vais me mettre en Mode Bourrin .... un petit count($this) vite fait suivi d'une boucle pour acrémenter chaque entrée dans une variable simple ...... en attendant de trouver la solution plus propre Bien-sûre! Mais non! .... dans l'os! elle ne me retourne qu'une seul entrée! l'enfoir..... mais attendez ...... elle ne serait donc composée que d'une seul variable composée!?! Pfff si quelqu'un a une lanterne .... je suis dans le broullard complet Link to comment Share on other sites More sharing options...
ChDUP Posted July 17, 2016 Share Posted July 17, 2016 Le problème est que votre function getContent ne retourne rien. Il faudrait plutôt qu'elle se termine par return $this->display(__FILE__, 'display.tpl'); pour passer les variables en smarty, utlisez cette syntaxe $this->context->smarty->assign( array( 'test' => 'Je suis une variable', 'test2' => 'Je suis une autre variable' ) ); 1 Link to comment Share on other sites More sharing options...
Jim & Nathi Posted July 17, 2016 Author Share Posted July 17, 2016 haaaaa je commence par te remercier d'avoir pris le temps de me répondre ChDUP! C'est vraiment sympa! Je test ça de suite .... fin je termine ce message avant! par contre de mon coté, je pense avoir trouvé la solution pour extraire une variable et son contenu de la Bebête "$this" .... sans passer par un array! je vais encore tenter d'en extraire 3-4 afin de m'assurer que ma technique est fiable et que ce n'est pas ... "la chance du débutant"! Te tiens au courant! Link to comment Share on other sites More sharing options...
Jim & Nathi Posted July 17, 2016 Author Share Posted July 17, 2016 (edited) Me revoilou bheiiiiin voila je vais faire mon boulet! j'ai pas réussis à bien afficher les variables de ton code! j\'ai test dans php ==> echo $test; echo $test['0']; var_dump($test); .... et j\'en passe il à rien voulu savoir! j'ai réussis à afficher du contenu d'une seul façon => var_dump(array($test)); Et il a afficher ça => array (size=1) 0 => null <!-- le null c\'est pour moi je crois! --> le hic, c'est qu'il n'affiche plus le css de ma page tlp qui est non attenant à PrestaShop ( ils est dans le rep du module/css ) et un autre truc bien marrant, il double Presta sur sa hauter J'aurais voulu le faire expres, j'aurais pas réussis! ca doit surement venir du faite que je ne l'ai pas mis à la bonne place On est novice ou on ne l'est pas! bon trève de plaisanterie .... j'ai enfin réussis à récupérer les vabriables de la global "$this" sans passer par un array facile pour certain mais moi j'ai sorti mes pagailles de compète! ^^ donc .......... comment puis-je faire pour envoyer une seul variable ( non array ) de mon .php vers mon .tpl? Je crois que j'ai lu ça dans le cours que j'ai télécharger pour créer mon module .... je ferai une boucle pour passer le peu de variable que je dois envoyer! tout en sachant que j'utilise déja ce code pour envoyer le css de Presta vers mon tpl via la variable "$this" ....., je ne peux donc pas le supprimer .... class galeriedisplayModuleFrontController extends ModuleFrontController { public function initContent() { parent::initContent(); $this->setTemplate('display.tpl'); } }; Mais j'imagine que ca ne posera pas de problème de mettre une nouvelle fonction juste apres?!? Merci d'avance Edited July 17, 2016 by Jim & Nathi (see edit history) Link to comment Share on other sites More sharing options...
Jim & Nathi Posted July 17, 2016 Author Share Posted July 17, 2016 Le problème est que votre function getContent ne retourne rien. Il faudrait plutôt qu'elle se termine par return $this->display(__FILE__, 'display.tpl'); pour passer les variables en smarty, utlisez cette syntaxe $this->context->smarty->assign( array( 'test' => 'Je suis une variable', 'test2' => 'Je suis une autre variable' ) ); he je viens de replonger la tête dans mes feuilles de formation pour passer une variable de php vers le tpl .... et effectivement c'était bien dedant ..... Et bingo, a quelque ligne pret, c'est le mêmes que le tiens! je vais regarder pour mieu l'utiliser cette fois! Encore merci Link to comment Share on other sites More sharing options...
coeos.pro Posted July 18, 2016 Share Posted July 18, 2016 t'aurais dû profiter du soleil ce week end... comme je ne connais pas ton niveau je vais essayer d'expliquer plusieurs points. 1- global : oublie ça c'est pour les vielles versions de prestashop 2- si tu veux faire un module ne prend pas les exemples, prend un "vrai" module qui fonctionne, tu es sûre d'avoir quelque chose qui ne te fera pas perdre un week end pour rien. 3- l'id customer c'est : $this->context->customer->id 4- si tu veux connaitre le contenu d'une variable, utilise la fonction ppp (au lieu de dump), exemple ppp($this->context->customer) te donnera toutes les variables et les valeurs concernant le client 5- un exemple concret : public function hookdisplayCustomerAccount() { $id_customer = (int)$this->context->customer->id; $this->context->smarty->assign('id_client', $id_customer); return $this->display(__FILE__, 'mon_fichier_tpl.tpl'); } -il faut que le module soit greffé sur le hook "hookdisplayCustomerAccount" -dans le fichier maboutique.com/mon_module/views/templates/front/mon_fichier_tpl.tpl tu pourra récupérer l'id client avec {$id_client} , si tu testes ton module avec https://validator.prestashop.com/ il faudra mettre par exemple {$id_client|escape:'htmlall':'UTF-8'} -tu trouvera ici : http://www.smarty.net/docsv2/fr/language.modifier.escape.tpl les détails sur escape en smarty Si tu as un tableau à envoyer vers smarty, exemple : $donnees = array('couleur' => 'bleu', 'taille' => 36); $this->context->smarty->assign('datas', $donnees); dans ton fichier maboutique.com/mon_module/views/templates/front/mon_fichier_tpl.tpl il faudra mettre {$datas.couleur} pour avoir bleu ou {$datas.couleur|escape:'htmlall':'UTF-8'} 6- la fonction getContent est à utiliser pour la configuration du module, ce n'est pas elle qui permet d'afficher quelque chose sur le front office 1 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