Jump to content

[RESOLU]Probleme: utiliser smarty dans un hook sans définir smarty en global


Recommended Posts

Bonjour tout le monde !

 

 

J'aimerai savoir s'il est possible d'utiliser smarty dans un hook prestashop sans initialiser de:

global    $smarty

 

Je demande cela car le validateur de module Prestashop déteste les variables globales et que j'ai besoin de smarty pour assigner une variable à mon template.

 

Je prends toutes les solutions qui peuvent fonctionner de la version 1.3 à la version 1.6 :)

 

Merci d'avance de vos réponses !

Edited by Ornicar (see edit history)
  • Like 1
Link to comment
Share on other sites

Salut Ornicar,

 

A partir de la 1.5 tu peux utiliser la propriété $this->smarty de la classe Module.
 

Avant la 1.5, et fonctionnant dans toutes les versions puisque c'est ton souci, tu peux peut-être réinstancier un objet smarty (tout dépend de si tu as besoin ou non du contexte ou bien si tu charges de nouvelles valeurs).

 

Le mieux sera de faire un accesseur à la variable smarty, qui en fonction de la version pourra réutiliser la propriété smarty et sa configuration pour rester homogène avec le comportement de l'installation (1.5 et supérieur), et en version inférieur réinstancier un objet smarty avec son paramétrage, tel que dans le fichier config/smarty.config.inc.php

 

par ex:

function getSmarty()
    $smarty = new Smarty();
    $smarty->template_dir   = _PS_THEME_DIR_.'tpl';
    $smarty->compile_dir    = _PS_SMARTY_DIR_.'compile';
    $smarty->cache_dir              = _PS_SMARTY_DIR_.'cache';
    $smarty->config_dir     = _PS_SMARTY_DIR_.'configs';
    $smarty->caching                = false;
    $smarty->force_compile  = true; // to pass "false" when put into production
    $smarty->compile_check  = false;

    return $smarty;
}
  • Like 1
Link to comment
Share on other sites

Merci pour tout,

 

Votre solution marche mais elle prend un peu de temps à mettre en place.

 

Il y a en fait plus simple à faire, il suffit de déclarer $GLOBALS['smarty'] et de l'utiliser pour que tout fonctionne.

 

De plus cela ne pose pas de soucis pour le validateur Prestashop ! :)

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