Rubriques

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

Rechercher
Derniers commentaires

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

Voir plus

Articles les plus lus

· 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

Voir plus 

Abonnement au blog
Recevez les actualités de mon blog gratuitement :

Je comprends qu’en m’abonnant, je choisis explicitement de recevoir la newsletter du blog "bernie-liege" et que je peux facilement et à tout moment me désinscrire.


Statistiques

Date de création : 20.05.2011
Dernière mise à jour : 29.09.2019
164 articles


Thèmes

sur template php html smarty série

Smarty : template pour PHP avec précompilation

Publié le 25/01/2018 à 16:07 par bernie-liege Tags : template php html smarty


Template PHP Smarty

De WikiLite
 
smarty-php
 
 
Définition

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

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <title>{$title_text|escape}</title>
  6. </head>
  7.  
  8. <body> {* This is a little comment that won't be visible in the HTML source *}
  9. {$body_html}
  10. </body>
  11. </html>

Issu du wikipédia  [1]

Notion de Template PHP

Un 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.

  1. <?php
  2.  
  3. require("./tpl/libs/smarty.class.php"); // On inclut la classe Smarty
  4.  
  5. $smarty = new Smarty(); // création de l'objet smarty
  6.  
  7. $smarty->display("test.html"); // affiche la page html test.html
  8.  
  9.  
  10. ?>

Contenu du fichier test.php'

  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <title>Test de Smart</title>
  7. </head>
  8. <body>
  9. <p>Ceci est un test situé dans test.html</p>
  10. </body>
  11. </html>
  12.  
  13.  


Smarty est codé en POO (programmation orientée objet).


Smarty01.jpeg

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.

Code PHP

  1. <?php
  2. require("./tpl/libs/smarty.class.php"); // On inclut la classe Smarty
  3.  
  4. $smarty = new Smarty(); // création de l'objet smarty
  5.  
  6.  
  7. $tpl->assign("variable01","Je suis une variable type string");
  8.  
  9. $tpl->assign(
  10. "2eme_variable" => "Je suis une variable",
  11. "une_autre_variable" => "Je suis une belle variable"
  12. // ...
  13. )
  14. );
  15. $smarty->display("test.html"); // affiche la page html test.html
  16. ?>

HTML

  1.  
  2. <!DOCTYPE html>
  3. <html>
  4. <head>
  5. <meta charset="utf-8">
  6. <title>Test de Smart</title>
  7. </head>
  8. <body>
  9. <h2>Ceci est un test situé dans test.html</h2>
  10. - <strong>{$variable01}</strong> <br />
  11. - {$2eme_variable} <br />
  12. - {$une_autre_variable}
  13.  
  14.  
  15.  
  16. </body>
  17. </html>
  18.  
  19.  

Résultat

Smarty02.jpg

 

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).

 

 

Exemple avec Capitalizer

En css, on a :

  1. p, div{
  2. text-transform: capitalize;
  3. }


Dans notre PHP

$tpl->assign("variable01","je suis une variable type string");


et dans notre HTML test.html

 

 
- {$variable01|capitalize:true}

 


Résultat :

Smarty03.jpg

Autres modificateurs

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.

Variables de requê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 :

  1.  
  2.  
  3.  
  4. {* Affiche la valeur de page dans l'url ($_GET) http://www.example.com/index.php?page=foo *}
  5. {$smarty.get.page}
  6.  
  7. {* affiche la variable "page" récupérée depuis un formulaire ($_POST['page']) *}
  8. {$smarty.post.page}
  9.  
  10. {* affiche la valeur du cookie "utilisateur" ($_COOKIE['username']) *}
  11. {$smarty.cookies.utilisateur}
  12.  
  13. {* affiche la variable serveur "SERVER_NAME" ($_SERVER['SERVER_NAME']) *}
  14. {$smarty.server.SERVER_NAME}
  15.  
  16. {* affiche la variable d'environnement "PATH" *}
  17. {$smarty.env.PATH}
  18.  
  19. {* affiche la variable de session PHP "id" ($_SESSION['id']) *}
  20. {$smarty.session.id}
  21.  
  22. {* affiche la variable "utilisateur" du regroupement de get/post/cookies/server/env *}
  23. {$smarty.request.utilisateur}
  24.  
  25.  

 

{$smarty.now}

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}

  1.  
  2. {* utilise le modificateur de variable date_format pour afficher la date et heure *}
  3. {$smarty.now|date_format:'%d-%m-%Y %H:%M:%S'}
  4.  

 

{$smarty.const}

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 :

  1.  
  2. {* la sortie de la constante PHP dans le template *}
  3. {$smarty.const._MA_CONSTANTE_}
  4.  

 

{$smarty.capture}

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.

 

{$smarty.config}

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.

 

{$smarty.section}, {$smarty.foreach}

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.

 

{section}

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.

 

Dans le HTML

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]

  1.  
  2. DEBUT <br>
  3. {section name=customer loop=$custid}
  4. id: {$custid[customer]}<br />
  5. {/section}
  6. <br>FIN<br>
  7. </code
  8.  
  9. =====code PHP=====
  10. <code>
  11. $data = array(1000,1001,1002);
  12. $tpl->assign('custid',$data);
  13.  

 

{foreach}

Exemple utilisation de {foreach}, depuis notre fichier PHP, nous avons un array que nous passons par un assign vers le fichier de template :

 

 

  1.  
  2. <?php
  3. $matiere = array('Mathématiques', 'Français', 'Physique-Chimie');
  4. $tpl->assign('liste_matiere', $matiere);
  5. ?>
  6.  

Et dans le fichier de template ou html, on utilise {foreach} avec from qui récupère la liste et item qui la « redistribue ».

  1.  
  2. {foreach from=$liste_matiere item=matiere}
  3. {$matiere} est une matière <br />
  4. {/foreach}
  5.  
  6.  

 

 


{$smarty.template}

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 :


Smart04.jpg

 

 

 

{$smarty.version}

Retourne la version de Smarty ayant servie à compiler le template.

 

 

{$smarty.ldelim}, {$smarty.rdelim}

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

  1.  
  2.  
  3. {literal}
  4. <script language=javascript>
  5. function dire(valeur) {
  6. alert(valeur);
  7. }
  8.  
  9. </script>
  10. {/literal}
  11.  
  12.  

 

 

 

 

 

 

 

 


Références

 

 

 

 

 

 

 

 

 


 

Commentaires (1)

Anonyme le 02/07/2018
alert('ABEL FDP');


Ecrire un commentaire