Section: Modificateurs
^ Plugins de template | Fonctions diverses » |
− Table des matières
Les modificateurs sont des fonctions qui permettent de modifier l'affichage d'une variable de template. Ils ne sont donc utilisés que lors des instructions d'affichage.
cat ¶
Ce modificateur permet de concaténer une chaîne de caractères à une variable.
Soit la variable de template $foo
ayant pour valeur 'bar'
:
$rep->body->assign('foo', 'bar');
Utilisation du modificateur cat
dans le template. On concatène la chaîne
'toto'
à la variable $foo
:
<p>{$foo|cat:'toto'}</p>
Ce qui donnera l'affichage :
<p>bartoto</p>
count_* ¶
Plusieurs modificateurs permettent de compter des choses dans une variable :
count_characters
: pour compter des caractèrescount_paragraphs
: pour compter des paragraphescount_sentences
: pour compter des phrasescount_words
: pour compter des mots.
Un exemple. Soit la variable de template $foo ayant pour valeur ‘bar’ :
$rep->body->assign('foo', 'bar');
Utilisation de count_characters dans le template :
<p>$foo contient {$foo|count_characters} caractères</p>
Ce qui donnera l'affichage :
<p>$foo contient 3 caractères</p>
Pour les autres modificateurs :
<p>{$foo|count_paragraphs} paragraphes</p>
<p>{$foo|count_sentences} phrases</p>
<p>{$foo|count_words} mots</p>
eschtml ¶
Ce modificateur correspond à la fonction htmlspecialchars de PHP.
Utilisez-le sur les contenus non sûr, comme des messages d'utilisateurs !
indent ¶
Ce modificateur de template indente chaque ligne de texte contenu dans une variable.
Voici un texte que l'on injecte dans un template :
$foo = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum."
$rep->body->assign('foo', $foo);
On affiche alors le texte contenu dans $foo dans le template :
<pre>
{$foo|indent}
</pre>
Ce qui donne :
<pre>
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum.
</pre>
Indent accepte 2 paramètres :
- le nombre de caractères à répéter pour l'indentation. Par défaut vaut 4
- le caractère à répéter. Par défaut c'est un espace.
{$foo|indent:"15"}
donne :
Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
Vivamus ornare, enim bibendum mollis interdum.
Et
{$foo|indent:"5":"-"}
donne :
-----Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-----Vivamus ornare, enim bibendum mollis interdum.
jdatetime ¶
Le modificateur jdatetime permet de convertir une chaîne contenant une date avec un certain format, vers une chaîne d'un autre format. Ce modificateur utilise la classe jDateTime.
Par défaut, le modificateur attend une chaîne au format base de données
(jDateTime::BD_DTFORMAT
) et renvoie la date au format correspondant à la langue
sélectionnée (jDateTime::LANG_DTFORMAT
).
<p>la date est {$myDate|jdatetime}.</p>
Si $myDate='2017-04-12 01:05:26'
et si la langue est fr, alors cela affiche :
la date est 12/04/2017 01h05mn26s.
Pour indiquer d'autres formats, vous devez indiquer l'une des chaînes en paramètre au modificateur :
paramètre | code correspondant dans jDateTime | format |
---|---|---|
'lang_date' | jDateTime::LANG_DFORMAT | date au format dans la langue actuelle de l'application (en fr, ce sera jj/mm/aaaa) |
'lang_datetime' | jDateTime::LANG_DTFORMAT | date et heure au format dans la langue actuelle de l'application |
'lang_time' | jDateTime::LANG_TFORMAT | heure au format dans la langue actuelle de l'application |
'db_date' | jDateTime::DB_DFORMAT | date au format base de données classique : "AAAA-MM-JJ" |
'db_datetime' | jDateTime::DB_DTFORMAT | date et heure au format base de données classique : "AAAA-MM-JJ HH:mm:SS" |
'db_time' | jDateTime::DB_TFORMAT | heure au format base de données classique : "HH:mm:SS" |
'iso8601' | jDateTime::ISO8601_FORMAT | format ISO8601 |
'timestamp' | jDateTime::TIMESTAMP_FORMAT | simple entier, indiquant le nombre de secondes depuis le 1/1/1970 (timestamp) |
'full_lang_date' | jDateTime::FULL_LANG_DATE | date au format complet (jour de la semaine et mois en toute lettre) en tenant compte de la langue |
Le premier paramètre indique le format de la chaîne que le modificateur reçoit, le deuxième, le format de la chaîne en résultat.
<p>la date est {$myDate|jdatetime:'db_date':'timestamp'}.</p>
si $myDate='2006-04-15' alors cela affiche
la date est 1145052000.
mailto ¶
ce modificateur permet d'afficher un lien vers le courriel d'un utilisateur, cela la forme de votre choix
pour cela plusieurs options possibles :
- affichage classique du courriel
{mailto array('address'=>'me@domain.com')}
- affichage du courriel encodé en javascript
{mailto array('address'=>'me@domain.com', 'encode'=>'javascript')}
- affichage du courriel encodé en héxadécimal
{mailto array('address'=>'me@domain.com', 'encode'=>'hex')}
- affichage du courriel suivi d'un sujet
{mailto array('address'=>'me@domain.com', 'subject'=>'Hello to you!')}
- affichage du courriel suivi d'un destinataire mis en copie
{mailto array('address'=>'me@domain.com', 'cc'=>'you@domain.com,they@domain.com')}
- utilisation d'options supplémentaires, telle une class CSS
{mailto array('address'=>'me@domain.com', 'extra'=>'class="mailto"')}
number_format ¶
Ce modificateur format un nombre à afficher tout comme expliqué dans la doc PHP number_format
exemple :
{$number|number_format:2, ',', ' '}
regexp_replace ¶
Ce modificateur permet de remplacer une chaine par une autre dans le template via les expressions régulières.
exemple
//$maVar = 'TOTOO';
{$maVar|regex_replace:'/O/':'ii'}
La chaine TOTOO
sera transformée en titii
.
replace ¶
Ce modificateur permet de remplacer une chaine par une autre dans le template
via la fonction str_replace
.
exemple
//$maVar = 'TOTOO';
{$maVar|replace:'O':'ii'}
La chaine TOTOO sera remplacée par
tiitiiii@@.
- *Attention la fonction str_replace est obsolète en php 5.3x, il est préférable d'utiliser le modification regexp_replace**
spacify ¶
Ce modification permet de rajouter un caractère entre chaque lettre
{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|spacify:}
Résultat : B o n j o u r _ t o u t _ l e _ m o n d e
{assign $mytext = 'Bonjour_tout_le_monde'}
{$mytext|spacify:'.'}
Résultat : B.o.n.j.o.u.r._.t.o.u.t._.l.e._.m.o.n.d.e
printf ¶
Ce modification permet de formater une chaine via la fonction sprintf
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|sprintf:'my format %s'}
Résultat : my format Bonjour tout le monde
strip ¶
Ce modification permet de supprimer les espaces qui sont en double dans une chaine et de les remplacer par défaut par un seul espace
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|strip}
Résultat : Bonjour tout le monde
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|strip:';'}
Résultat : Bonjour tout le;monde
truncate ¶
Ce modificateur permet de couper une chaine à une longueur voulue (si besoin),
peut eventuellement la séparer dans le milieu d'un mot, et peut ajouter une chaine
de terminaison (comme '...'
).
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|truncate}
résultat : Bonjour tout le monde
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|truncate:10}
résultat : Bonjour...
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|truncate:10:'[...]'}
résultat : Bonjour[...]
Si vous voulez autoriser la coupure en plein milieu d'un mot :
{assign $mytext = 'Bonjour tout le monde'}
{$mytext|truncate:10:'...':true}
résultat : Bonjour to...
truncatehtml ¶
Ce modificateur permet de couper une chaine formatée en HTML en fermant tous les tags html ouverts, de sortes que le reste de la page n'est pas impacté
Vous devriez utiliser ce modificateur dans une zone afin que la valeur retournée soit dans la cache.
Exemple d'utilisation
{$mytext|wordwrap}
{$mytext|truncatehtml:150:"\n<a href="...">lire l'article complet</a>"}
{$mytext|truncatehtml:45}
wiki ¶
Le modificateur wiki permet de convertir une chaîne contenant une syntaxe wiki, vers le format de votre choix. Ce modificateur utilise la classe jWiki.
Par défaut, le modificateur attend une chaine au format wiki (wr3) et la renvoie au format XHTML, exemple :
<p>{$message|wiki}</p>
Si $message
vaut par exemple :
===== title =====
A word in __bold__.
Le rendu sera
<h1>title</h1>
<p>A word in <strong>bold</strong></p>
Pour indiquer d'autres formats, vous devez indiquer l'une des chaînes en paramètre au modificateur :
paramètre | Rendu |
---|---|
'classicwr_to_text' | affichera du texte au format wiki (v2 du WikiRender) en texte |
'classicwr_to_wr3' | affichera du texte au format wiki (v2 du WikiRender) en wiki (v3 du WikiRender) |
'classicwr_to_xhtml' | affichera du texte au format wiki (v2 du WikiRender) en XHTML |
'dokuwiki_to_docbook' | affichera du texte au format dokuwiki en docbook |
'dokuwiki_to_xhtml' | affichera du texte au format dokuwiki en XHTML |
'trac_to_xhtml' | affichera du texte au format wiki de Trac en XHTML |
'wr3_to_docbook' | affichera du texte au format wiki (v3 du WikiRender) en docbook |
'wr3_to_text' | affichera du texte au format wiki (v3 du WikiRender) en texte |
'wr3_to_xhtml' | affichera du texte au format wiki (v3 du WikiRender) en XHTML |
Le paramètre indique le format d'origine et
de transformation (voulu) que
le modificateur reçoit
<p>{$message|wiki:'wr3_to_xhtml'}</p>
html:nl2br ¶
Ce modificateur remplace les retours à la ligne en balise html <br/>
dans un
texte contenu dans une variable de template.
Prenons la variable $foo
contenant le texte suivant et qu’on assigne au template :
$foo = "Lorem ipsum dolor sit amet,\nconsectetuer adipiscing elit."
$rep->body->assign('foo', $foo);
On affiche alors le texte contenu dans $foo
dans le template :
<p>{$foo|nl2br}</p>
Ce qui donne :
<p>Lorem ipsum dolor sit amet,<br/>consectetuer adipiscing elit.</p>