#SET et #GET

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.

Usage

#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

Si votre chaine contient des virgules, il faut utiliser des guillemets :

#SET{parfums,'Vanille, fraise, chocolat'}
#GET{parfums}

…affichera : Vanille, fraise, chocolat

Un tableau

#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

Comme pour la balise #ENV il est possible d’accéder directement à une des valeurs du tableau avec l’aide d’un / .
Avec le tableau de l’exemple précédent, #GET{mon_tablo/b} renvoie deux.

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

Définir une valeur par défaut pour #GET

À l’instar de la balise #ENV, 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 aussi

Les balises tableaux

Critères

Auteur cam.lafit, denisb Publié le : Mis à jour : 28/06/23

Traductions : عربي, català, English, Español, français, Nederlands