elisa_34 Posted May 1, 2011 Share Posted May 1, 2011 Bonjour, je débute sur smarty (et sur ps).... je comprend (je crois) la structure d'un module (merci Julien et les autres...)mais quand je fais : function toto() { echo 'hello world'; } public function hookleftColumn($params) { global $smarty; $smarty->assign (blockfirstmodule::toto()); $smarty->assign('test', 'mon example'); return $this->display(__FILE__, 'blockfirstmodule.tpl'); } 'mon example' s'affiche au bon endroit sans souci, mais ma fonction 'toto' s'affiche tout en haut hors du body, et aussi dans le template mais pas du tout au niveau du hook leftColumn...je fais mal un truc ?merci Link to comment Share on other sites More sharing options...
elisa_34 Posted May 2, 2011 Author Share Posted May 2, 2011 on peut voir en pj l'output en doublon aux deux endroits ...je precise que je suis en 1.4merci à vous Link to comment Share on other sites More sharing options...
elisa_34 Posted May 2, 2011 Author Share Posted May 2, 2011 ok, Smarty et la fonction assign sont uniquement faits pour passer des variables:{assign} est utilisé pour déclarer des variables de template durant l'exécution du template.alors quel est le process pour déclarer sa class et s'en servir dans un module, Merci Link to comment Share on other sites More sharing options...
Vincent Decaux Posted May 2, 2011 Share Posted May 2, 2011 En clair, le PHP ici est le Controller, le Controller ne traite jamais les vues ! Tu ne peux pas faire de "echo" ou "var_dump", le PHP est exécuté avant l'affichage des vues, donc toutes tes sorties se trouveront avant.Il faut, si tu veux les choses bien : function toto() { return 'hello world'; } public function hookleftColumn($params) { global $smarty; $smarty->assign ('result', $this->toto()); $smarty->assign('test', 'mon example'); return $this->display(__FILE__, 'blockfirstmodule.tpl'); } Et dans ta vue, en faisant ' {$result} ', ta variable contiendra ton 'hello world'. Link to comment Share on other sites More sharing options...
elisa_34 Posted May 2, 2011 Author Share Posted May 2, 2011 Bonjour Vincent, merci beaucoup de ta réponse, Est-ce que quelqu'un pourrait m'indiquer un tutoriel pour ajouter ma propre class de manière propre dans Prestashop et l'appeler dans mon module par la suite ! merci d'avance Link to comment Share on other sites More sharing options...
Vincent Decaux Posted May 2, 2011 Share Posted May 2, 2011 Et bien il faut faire un fichier PHP à part, puis faire un include en haut du fichier PHP du module.Le fichier PHP à part contiendra ta classe, dont tu appelleras les méthodes depuis le PHP de ton module.Plusieurs modules sont bâtis sur ce modèle, le "productcomments" par exemple.N'oublie jamais regarder les autres modules, c'est le meilleur tutoriel qui existe Link to comment Share on other sites More sharing options...
Vincent Decaux Posted May 2, 2011 Share Posted May 2, 2011 Et bien il faut faire un fichier PHP à part, puis faire un "require" en haut du fichier PHP du module.Le fichier PHP à part contiendra ta classe, dont tu appelleras les méthodes depuis le PHP de ton module.Plusieurs modules sont bâtis sur ce modèle, le "productcomments" par exemple.Cas concret, dans le PHP principal : require_once(dirname(__FILE__).'/TaClass.php'); $test = TaClass::firstFunction(); Dans le TaClass.php : class TaClass extends ObjectModel { static public function FirstFunction() { return 'hello world'; } } N'oublie jamais regarder les autres modules, c'est le meilleur tutoriel qui existe . Link to comment Share on other sites More sharing options...
elisa_34 Posted May 2, 2011 Author Share Posted May 2, 2011 Merci beaucoup pour ton aide, je vais m'inspirer du dit module, Bonne journée 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