SPIP

[ar] [ast] [bg] [br] [ca] [co] [cpf] [cs] [da] [de] [en] [eo] [es] [eu] [fa] [fon] [fr] [gl] [id] [it] [ja] [lb] [nl] [oc] [pl] [pt] [ro] [ru] [sk] [sv] [tr] [vi] [zh] Espace de traduction

Télécharger

#SET et #GET

Décembre 2009 — mis à jour le : Février 2011

Toutes les versions de cet article :

La balise #SET définit une variable qui sera utilisable dans l’ensemble du squelette.
La balise #GET permet ensuite de récupérer cette variable.


#SET{variable,valeur}
#GET{variable} retourne "valeur".

La variable définie par #SET peut être une chaîne de caractères ou un tableau.

-  Une chaîne de caractères :
#SET{ma_chaine, article de #NOM}

#GET{ma_chaine} affichera :
article de Toto

-  Un tableau [1] :
#SET{mon_tablo, #ARRAY{a,un,b,deux,c,trois,d,quatre}}

[(#GET{mon_tablo}|foreach)] affichera :

  • a => un
  • b => deux
  • c => trois
  • d => quatre

Usages avancés avec les chaînes de caractères

-  Une expression régulière :

#SET{reg1, '(^.*/[^/]+[/])'}
#SET{reg2, '\.[\w-_]+?'}
<BOUCLE_def(DOCUMENTS){tout}>
[(#FICHIER|replace{#GET{reg2}}|replace{#GET{reg1}})]<hr />
</BOUCLE_def>


permet de récupérer et d’afficher le nom du fichier d’un document, débarrassé de son chemin d’accès (path) et de son extension.
Par exemple, si #FICHIER est IMG/pdf/Stats_Sejour_au_311207.pdf nous afficherons Stats_Sejour_au_311207.

L’intérêt ici d’utiliser les balises #SET et #GET pour l’expression régulière est de permettre l’utilisation des crochets ([ et ]) dans le filtre |replace.

-  Le résultat retourné par un INCLURE :

[(#SET{mon_retour, #INCLURE{fond=calculs}})]

Valeur par défaut

Si variable n’a pas été définie par un #SET{variable, valeur} préalable, il est possible de préciser une valeur par défaut lors de l’insertion de la balise #GET :
#GET{variable, valeur_par_defaut} retournera « valeur_par_defaut, » si « variable » n’a pas été définie auparavant.

Attention : cette méthode n’attribue pas « valeur_par_defaut » à « variable ».

Portée de la variable définie par #SET

Les valeurs définies par la balise #SET restent locales au squelette où elles ont été définies.

Ainsi, la valeur d’une variable définie par un SET dans un fichier inclu ne pourra pas être récupérée par le GET correspondant dans le fichier incluant.

Savoir où placer sa déclaration #SET

Lorsqu’on veut qu’une boucle fournisse une ou plusieurs valeurs à une variable déclarée avec #SET il convient de placer la déclaration de ce #SET avant la toute première balise ouvrante de la boucle.

Ceci est particulièrement important lorque la boucle est déclarée avec sa syntaxe complète (en effet une déclaration #SET placée entre <B_..> et <BOUCLE_...> sera initialisée après l’exécution de la boucle.)


Voir le squelette de cette page Site réalisé avec SPIP | Espace de traduction | Espace privé