bonjour,
je débute en smarty, je développe un site avec une base prestashop,
et j’ai un soucis, j’ai écrit du code php dans un fichier template dans les balises {php}, j’appelle une page externe par la fonction include, cela marche en local mais n’est pas pris en compte en ligne…

{php}
   $cpl = $this->get_template_vars('cpl');
   include('http://www.monurl.com?cpl='.$cpl);
{/php} 


Je ne comprends pas, ma version locale m’affiche parfaitement l’inclusion de la page appelée, mais en ligne impossible, je peux bien afficher la variable $cpl, mais l’inclusion n’est pas prise en compte.

D’où cela peut-il provenir ? Y a-t-il des restrictions à l’utilisation de l’include php dans des balises {php} sur un template.

J’ai presque fini, il ne me manque que ça !!!
à l’aide !!!
Merci d’avance.
Salut biftannen

Je vois que tu as un $objet->php : $this->get_template_vars ( ) est un objet php.
Và voir à la page 168 - 169 du pdf de smarty. Surtout la page 169.

Il y a une façon d'appeler un objet php. En smarty c'est « register_object ».
$smarty->register_object ( ) : plusieurs façon existe de définir les params.

Celui-ci peut appeler des méthodes d'une classe : il considère aussi les propriétés de classe.

register_object de smarty est plus souple d'utilisation. On enrégistre l'instance de classe et on ne cible que la méthode utile dans le array et/ou les propriétés utiles.

Je ne crois pas qu'un objet en php peut être appeller avec smarty sous la forme
 
{php}
. . . instruction d'appelle d'objet php . . .
{/php}

Un objet doit toujours être sous « register_object » de smarty.

++
Modifié par zardoz (10 Dec 2010 - 04:36)