Jump to content

smarty & module


Recommended Posts

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

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

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

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

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

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

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...