Affecter et afficher une variable
Une des opérations les plus simples à faire avec votre nouveau moteur de templates est de pouvoir afficher des variables. Comme toute opération (ou presque), elle se passera en deux temps :
- vous devrez commencer par ajouter un morceau de code côté PHP pour assigner la variable au moteur ;
- ensuite, il faudra l'afficher depuis votre template.
Côté PHP
Vous disposez d'une fonction au nom simple à retenir pour assigner des variables :
Talus_TPL::set(). Elle peut s'utiliser de deux manières :
Code : PHP | <?php
// Première méthode : on assigne 'abcd' à VAR
$tpl->set('VAR', 'abcd');
// Variante : on assigne 'abcd' à VAR par l'intermédiaire d'une variable PHP
$texte = 'abcd';
$tpl->set('VAR', $texte);
// Seconde méthode : on assigne des variables multiples via un array
$tpl->set(array('VAR1'=>'abcd', 'VAR2'=>'efgh', 'AUTRE_VAR'=>12.5));
|
Quelques remarques donc sur ce code.
La fonction
Talus_TPL::set() prend deux arguments : le nom de la variable qui sera utilisée côté template, et sa valeur. Les variables suivent les mêmes règles de nommage que pour PHP. Vous pouvez ensuite assigner une valeur de n'importe quel type, donc aussi bien un array qu'une chaîne de caractères qu'un entier... sauf un objet. Les variables côté PHP et côté template ne doivent pas nécessairement porter le même nom.
L'assignation avec
Talus_TPL::set() permet aussi d'affecter plusieurs variables en une seule fois. La fonction reçoit un array, avec dans les clés le nom de la variable côté template et dans les valeurs... sa valeur.
Côté template
L'affichage d'une variable est très simple :
Code : XML
affichera le contenu de la variable
VAR. Vous pouvez aussi de la même manière accéder aux clés d'un array :
Code : XML
... ainsi qu'aux propriétés d'un objet (pour peu qu'elle soit publique, ou que la méthode __get() soit correctement implémentée) !
Code : XML
Pour des raisons techniques (limitation des expressions régulières), il est pour le moment impossible d'utiliser le symbole ']' dans la clé d'un array.
Échapper une variable
Et si je veux afficher {VAR} dans mon fichier .html, sans que cela soit interprété ?
Pour que
VAR ne soit pas affichée, utilisez cela :
Code : XML
Il s'affichera alors :
Citation : Rendu
{VAR}
On dit qu'on
échappe la variable.
Utiliser la variable sans l'afficher
Pendant que j'y suis, une autre chose à connaître est la manière d'obtenir la variable sans l'afficher. Cela servira quand nous verrons les conditions et autres fonctionnalités de la syntaxe Talus' TPL.
Code : XML
L'instruction renvoie la valeur de la variable,
mais sans l'afficher. Un peu comme si vous faisiez de la manière suivante :
Code : PHP
Constantes
Enfin pour finir ce chapitre, voyons l'utilisation des constantes. Vous n'avez pas à les assigner à nouveau, elles sont accessibles depuis le fichier de template sans code additionnel côté PHP.
Code : XML
Il suffit donc juste de l'entourer de deux tirets bas
__. Pour obtenir leur valeur, même topo que précédemment :
Code : XML
A propos de constantes, vous pouvez également utiliser des constantes de classes comme suite :
Code : XML | {__Classe::CONST__}
{__$Classe::CONST__}
|
Utiliser les filtres
Un ajout intéressant de Talus' TPL par rapport à d'autres moteurs de templates est l'utilisation de filtres. Ils fonctionnent de la même manière que dans
Django. Leur rôle est d'appliquer une transformation à la variable. Ils peuvent s'utiliser indifféremment à l'affichage ou à la récupération d'une variable. Pour les utiliser, ajoutez-les à la suite de la variable, séparés par des barres verticales |. Ils sont cumulatifs.
Code : XML | /* Affiche le contenu d'une variable en minuscules */
{VAR|minimize}
|
Code : XML | /*
* Echappe les caractères HTML et convertit les sauts de ligne en <br /> ;
*/
{VAR|protect|nl2br}
|
donnera à la compilation quelque chose comme :
Code : PHP | <?php echo nl2br(htmlspecialchars($tpl->vars['VAR'])); ?>
|
J'ai pris cet exemple car ici l'ordre a de l'importance. Essayez d'inverser les filtres si vous ne me croyez pas.
Les filtres peuvent aussi accepter des
arguments. Pour cela, après le nom du filtre, séparez vos arguments par le symbole deux-points.
Code : XML | /* Protège la variable VAR, la coupe à 50 caractères maximum, et interprete les sauts de ligne. */
{VAR|protect|cut:50|nl2br}
|
De même, vous pouvez aussi ajouter des filtres automatiques sur vos variables (lors de l'assignation via
set, vos variables seront donc automatiquement transformées par le filtre renseigné), grâce à la méthode
Talus_TPL::autoFilters() :
Code : PHP | <?php
$tpl->autoFilters('protect'); // protect sera appliqué sur chaque variable déclarées dans l'objet $tpl
|
Je finirai sur une petite liste des filtres disponibles de base, sachant que cette liste peut évoluer. Vous pouvez de plus facilement ajouter les vôtres. Notez que certains filtres peuvent avoir des paramètres supplémentaires, mais je vous laisser explorer à votre discrétion pour les découvrir !
| Nom du filtre |
Usage |
| floor |
Arrondit le nombre à l'entier inférieur. |
| ceil |
Arrondit le nombre à l'entier supérieur. |
| protect |
Échappe les caractères HTML du contenu de la variable. |
| safe |
Désactive une application de protect sur le contenu de la variable. Utile si, par exemple, vous avez mis le filtre automatique "protect". |
| maximize |
Met le contenu de la variable en majuscules. |
| minimize |
Met le contenu de la variable en minuscules. |
| ucfirst |
Met la première lettre du contenu de la variable en majuscule. |
| lcfirst |
Met la première lettre du contenu de la variable en minuscule. |
| invertCase |
Inverse la casse dans le contenu de la variable. |
| convertCase |
Convertit la casse du contenu de la variable |
| nl2br |
Convertit les sauts de ligne en <br /> dans le contenu de la variable. |
| paragraphy |
Transforme le contenu d'une variable en série de paragraphes ou sauts de ligne suivant le contexte. |
| slugify |
Convertit le contenu de la variable en slug (type celui qu'on trouve sur le site du zéro, dans la barre d'adresse, pour des sujets, news ou tutoriels). |
Notez qu'il existe un sujet sur Talus' Works, qui recense les filtres que les utilisateurs ont pu créer ; n'hésitez pas à
consulter cette liste, et même à proposer de nouveaux filtres ; peut-être seront-ils intégrés à une future version de Talus' TPL ?
