>> Toutes les rubriques <<
· Informatique (67)
· Nature : Aquarium, plantes, et animaux (12)
· Politique et Information (23)
· Sciences (8)
· Musique (7)
· Films (10)
· Peinture, photo (2)
· Histoire (8)
· Bouquins (7)
· Femmes hors du commun (1)
welcome http://mobstan o01.centerblog .net
Par mobstano01, le 11.01.2020
medium retour d'etre aimer chance au jeux loto richesse de la porte monnaie magique valise magique ce qui
Par Anonyme, le 07.11.2019
merci... http://bernie- liege.centerbl og.net
Par bernie-liege, le 27.09.2019
beau travail !
Par Anonyme, le 23.09.2019
dd
Par Anonyme, le 13.06.2019
· Histoire de pet et de dromadaire
· Le concombre tueur !
· L'origine du Monde
· Aux Philippines, trois cent nouvelles espèces !
· Vol de corne de rhinocéros à l'aquarium de Liège
· le Quintette à cordes D 956 de Schubert
· Le dormeur du Val
· Encore des choses surprenantes dans la Nature
· Inception, ou la puissance de l'inconscient
· Ajout du projet Littré dans un media-Wiki
· Bac de quarante mille litres
· Dutronc, je retourne ma veste
· Mort du chanteur Alain Leprest
· Aquarium de Bruxelles
· Le blues de l'informaticien
Date de création : 20.05.2011
Dernière mise à jour :
29.09.2019
164 articles
Template PHP Smarty
Smarty est un moteur de template pour le langage PHP.
Il est rapide et permet la gestion des caches.
Il facilite la séparation entre la logique applicative et la présentation (d'un point de vue du modèle OSI).
Description
Smarty est le moteur de template de quelques applications Web telles que Prestashop ou Drupal
Issu du wikipédia [1]
Notion de Template PHPUn moteur de template PHP est écrit en PHP (logique :p ) ; son rôle est principalement de vous aider dans la lisibilité et la logique de votre projet en général, de son code en particulier.
Également couplé d'une structure MVC, ce système donne d'excellentes performances.
Ce que fait précisément un moteur de template, c'est rassembler le code de présentation (tout ce qui est (x)HTML et CSS) et le code d'application (votre requête en PHP et autres).
Ainsi, plus besoin de se casser la tête à retrouver la requête dans la structure HTML du site ou encore à rechercher la variable dans un monticule de texte. [2]
Installation et utilisation
En fait, il faut installer les fichiers dézippés dans un répertoire de votre projet PHP, par exemple le répertoire tpl
Download du fichier zippéChoisir la version 3 si vous avez PHP >=5 : Page des zips
NB :
Évitez de mettre les fichiers du dossier libs de Smarty à la racine même du site, cela peut causer des problèmes au niveau de l'inclusion et peut entraîner des erreurs.
Premiers tests
Pour commencer, nous allons réaliser la plus simple action du moteur de template et découvrir peu à peu les bases de Smarty, comme par exemple afficher une page.
Créons un fichier PHP test.php à la racine de du projet et commencez par y ouvrir les balises PHP.
On débute par l'inclusion de la classe qui permet à Smarty de fonctionner.
Contenu du fichier test.php'
Smarty est codé en POO (programmation orientée objet).
Résultat sur webbrowser en localhost
Les variables
Pour passer des informations du fichier PHP au fichier de template, Smarty met à disposition une fonction.
Cette fonction est très importante : elle permet « d'envoyer » les informations récoltées vers le fichier de template.
C'est par ce moyen que nous allons prochainement faire passer les informations des news dans le fichier test.html.
Smarty utilise dans les templates des délimitations, les accolades {},
autour d'une variable, d'une condition, etc.
Les modificateur de variables
il est possible d'utiliser des modificateurs qui permettent de modifier une variable.
Il en existe une grande quantité et il est même possible d'en créer.
Ces modificateurs permettent d'éviter des manipulations compliquées dans la partie PHP.
N'oubliez jamais que là où vous bloquez pour un affichage spécial d'une variable, Smarty a toujours un modificateur à vous proposer.
Prenons par exemple capitalize : du même nom que son homologue CSS, ce modificateur permet de mettre la première lettre de chaque mot en majuscule.
Pour mettre en place les modificateurs, rien de plus simple : il suffit de placer une barre verticale | (pipe) derrière le nom de la variable. Ensuite, il suffit de placer le nom du modificateur et s'il le faut un statut (un bool ou un nombre).
En css, on a :
Dans notre PHP
$tpl->assign("variable01","je suis une variable type string");
et dans notre HTML test.html
- {$variable01|capitalize:true}
Résultat :
Dans le tableau ci-dessous, quelques modificateurs comprenant le Nom, son utilité, équivalent PHP/CSS et un exemple...
| Nom | Utilité | Équivalent (PHP ou CSS) | Exemple |
|---|---|---|---|
| cat | Permet d'ajouter une valeur à la fin d'une variable. | <?php $var . "texte"; ?> | cat:"texte"} |
| date_format | Permet de mettre une date dans un format spécial. | <?php date($date,"%d/%m/%Y"); ?> | date_format:'%d/%m/%Y'} |
| lower | Met le contenu de la variable en minuscules. | p{text-transform: lowercase;} | lower} |
| replace | Remplace un élément en un autre dans toute la chaîne. | <?php str_replace("o", "au", $toto); ?> | replace:"o":"au"} |
| spacify | Permet d'ajouter une espace — ou un caractère s'il est spécifié — entre chaque lettre. | — | spacify} |
| string_format | Permet d'arrondir un chiffre. | <?php round($nbr); ?> | string_format} |
| truncate | Permet de couper un texte et d'y ajouter un texte juste après 30 caractères. | <?php substr($string, 0, 30); ?> | truncate:30} |
| upper | Permet de mettre toutes les lettres en capitales. | p{text-transform: uppercase;} | upper} |
Variable réservée {$smarty}
La variable PHP réservée {$smarty} peut être utilisée pour accéder à plusieurs variables d'environnements. En voici la liste complète.
Les variables de requête comme $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV et $_SESSION (voir $request_vars_order et $request_use_auto_globals) peuvent être utilisées comme dans l'exemple suivant :
Le timestamp courant peut être récupéré grâce à {$smarty.now}.
La valeur correspond au nombre de secondes écoulées depuis Epoch (1 Janvier 1970) et peut être passé directement au modificateur de variable date date_format à des fins d'affichage.
Notez que time() est appelé à chaque invocation, i.e. un script qui prend 3 secondes à s'exécuter avec $smarty.now au début et à la fin montrera les 3 secondes de différence.
Example 4.8. Utilisation de {$smarty.now}
Vous pouvez directement accéder aux constantes PHP. Voir aussi les constantes smarty.
// la constante définie dans PHP
define('_MY_CONST_VAL','CHERRIES');
Affiche la constante dans un template comme :
La sortie du template réalisée via {capture}..{/capture} peut être récupérée par l'intermédiaire de la variable {$smarty.capture}. Voir la section sur {capture} pour un exemple à ce sujet.
La variable {$smarty.config} peut être utilisée pour désigner une variable d'un fichier de configuration.
{$smarty.config.foo} est un synonyme de {#foo#}. Voir la section {config_load} pour un exemple à ce sujet.
La variable {section} peut être utilisée pour accéder aux propriétés des boucles {$smarty.section} et {$smarty.foreach}. Voir la documentation de {section} et {foreach}.
Ils ont des valeurs vraiment utiles comme .first, .index, etc.
Une {section} sert à boucler dans des tableaux de données, contrairement à {foreach} qui est utilisé pour boucler dans un simple tableau associatif.
Chaque balise {section} doit aller de paire avec une balise {/section} fermante.
loop doit être égal à l'array
structure : section name = monIndex loop=$nom_variable_qui_contient_array ! Ensuite, chacun des éléments dans le html sera contenu dans la variable $nom_variable_qui_contient_array[index]
Exemple utilisation de {foreach}, depuis notre fichier PHP, nous avons un array que nous passons par un assign vers le fichier de template :
Et dans le fichier de template ou html, on utilise {foreach} avec from qui récupère la liste et item qui la « redistribue ».
Retourne le nom du template courant. Cet exemple montre le le nom du conteneur courant (test.html) ainsi que le test.tpl inclus avec {$smarty.template}.
Exemple HTML :
Le conteneur principal est {$smarty.template}
{include file='test.tpl'}
Affichera :
Retourne la version de Smarty ayant servie à compiler le template.
Ces variables sont utilisées pour afficher le délimiteur gauche et le délimiteur droit.
Lire aussi la partie {ldelim},{rdelim}.
Incrustation de script dans le HTML
Si vous essayer d'incruster un code JS ou CSS , l'utilisation d'accolade risque de provoquer des interférences. Pour contourner cela, il faut utiliser la fonction native {literal} comme ceci
alert('ABEL FDP');Ecrire un commentaire