Categories > TinyButStrong general (FR) >

Question sur l'utilisation des Sous-templates

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: Mushu
Date: 2012-01-14
Time: 18:49

Question sur l'utilisation des Sous-templates

Bonjour,

Je me suis posé une question sur la visibilité des variables lors de l'utilisation des sous-templates. En effet, si je ne déclare pas un variable, servant à créer un bloc ou un champ TBS, en global, TBS me retourne l'erreur suivante :
TinyButStrong Error in field [onshow.variable...]: the key 'variable' does not exist or is not set yet in VarRef. This message can be cancelled using parameter 'noerr'.

Y'a-t-il un moyen pour que cela ne soit pas nécessaire, je ne trouve pas ça super propre ? :-/

Voici l'extrait de mon sous-template pour illustrer mes propos :
    global $variable ;
    $inscription_nom = "contenu de la variable" ;
    $this->LoadTemplate('./templates/template2.tpl', '+') ;
    $this->Show() ;

Merci :)
By: Skrol29
Date: 2012-01-15
Time: 01:10

Re: Question sur l'utilisation des Sous-templates

Bonjour Mushu,

D’après le message d'erreur on dirait que tu utilises TBS 3.8-beta ?
Mais ça ne change rien à la situation.

En fait je ne comprends pas bien le problème.
Tu déclares une variables $variable en tant que globale, tu ne l'initialise pas, et elle est utilisée dans un sous-template. Et à la fusion, le [onshow] du sous-template produit un message d'erreur.
Moi ça me semble normal, puisque ta variable n'est pas initialisée.


By: Mushu
Date: 2012-01-15
Time: 15:58

Re: Question sur l'utilisation des Sous-templates

En fait, ma variable est déclarée dans le sous-template et utilisée uniquement à cet endroit. Or si je ne la déclare pas en globale, j'ai l'erreur. Par contre je viens de voir qu'une coquille s'est glissé dans mon code d'exemple, je remets la version corrigée ici

global $variable ;
$variable = "contenu de la variable" ;
$this->LoadTemplate('./templates/template2.tpl', '+') ;
$this->Show() ;

En gros, puisque le chargement du sous-template et le show sont fait ici, pourquoi devoir mettre la variable en globale ?

Sinon, oui je suis avec la version beta :)
By: Skrol29
Date: 2012-01-16
Time: 00:14

Re: Question sur l'utilisation des Sous-templates

Salut,

En fait c'est malheureusement logique. Ton script PHP du sous-modèle n'est pas exécuté dans un contexte global. C'est même impossible. Il est exécuté dans un contexte de fonction.
Et donc toutes les variables que tu crées dans ce sous-script seront locales uniquement.
By: Mushu
Date: 2012-01-16
Time: 02:27

Re: Question sur l'utilisation des Sous-templates

Puisque j'ai un Show() dans le sous template, la visibilité local des variables ne serait-elle pas suffisante ?
By: Skrol29
Date: 2012-01-16
Time: 21:41

Re: Question sur l'utilisation des Sous-templates

Ce serait bien mais malheureusement PHP n'offre pas cette souplesse.

Regard ce code :
$variable = "contenu de la variable" ;
$this->LoadTemplate('./templates/template2.tpl', '+') ;

Il est impossible à la fonction LoadTemplate() de connaitre la variable locale $variable, à moins que tu ne lui fasse une passation explicite.
Pareil pour la méthode Show().
By: Mushu
Date: 2012-01-17
Time: 02:24

Re: Question sur l'utilisation des Sous-templates

OK. Merci pour les explications :)