Un moteur de template : Smarty

Formation

En Ligne

Prix sur demande

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Description

  • Typologie

    Formation

  • Méthodologie

    En ligne

Grâce à cette formation vous pourrez acquérir les connaissances nécessaires qui vous permettrons d’ajouter des compétences à votre profil et obtenir de solides aptitude qui vous offriront de nombreuses opportunités professionnelles.

Questions / Réponses

Ajoutez votre question

Nos conseillers et autres utilisateurs pourront vous répondre

À qui souhaitez-vous addresser votre question?

Saisissez vos coordonnées pour recevoir une réponse

Nous ne publierons que votre nom et votre question

Les Avis

Le programme

Introduction du cours

Le développement du PHP passe par plusieurs outils.
Si vous sortez tout fraîchement d'autres tutoriels sur le PHP, vous avez sûrement entendu parler des frameworks ou des moteurs de template. Nous allons ici nous intéresser à un moteur de template. Qu'est-ce que c'est ? Á quoi cela sert-il ? Et comment l'utiliser, que ce soit simplement ou pour une utilisation plus poussée ?

La version PHP 5 ou ultérieur doit être obligatoirement être installée sur votre serveur pour pouvoir utiliser Smarty.

Pour vous permettre de suivre au mieux ce tutoriel, il est conseillé d'avoir des bases en PHP, comme par exemple grâce au tutoriel de M@teo21 sur le PHP.

Ce tutoriel a été corrigé par l'équipe des zcorrecteurs :

Un moteur de template ?Un moteur de template ?

C'est une question que vous devez vous poser si vous ne connaissez pas déjà la réponse.
Si c'est déjà le cas, je vous invite à sauter cette sous-partie du cours et à vous diriger directement vers la suivante. Pour ceux qui ne savent pas ce qu'est un moteur de template, je vous conseille vivement de lire ce qui suit.

Tout d'abord, je vais vous présenter ce qu'est un moteur de template. Je vous parlerai ensuite de Smarty, qui est le moteur de template que nous allons étudier.

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.

Le rouage d'un moteur de template est bien huilé. En effet, prenons une page d'index contenant une série de news. Le fichier PHP va se charger de rechercher les informations dans la base de données : titre, contenu, créateur…
Ce fichier ne contient aucune balise (x)HTML ayant une influence sur l'affichage. Et d'un autre côté, on trouve un fichier de template (.html ou .tpl) qui contient la structure (x)HTML de la page web. Grâce au moteur de template, les informations contenues dans le fichier PHP lui seront transmises et le moteur regroupera les deux fichiers en un seul par une compilation.

Voici comment fonctionne la compilation complète des deux fichiers :

  • lecture du fichier PHP ;

  • lecture du template ;

  • compilation ;

  • création du script PHP à partir des deux autres ;

  • exécution du code généré.

Bien sûr, un tel système comprend son lot d'avantages, mais aussi d'inconvénients.

Avantages
  • La séparation des deux codes permet une meilleure visibilité dans le code. Idéal pour le travail d'équipe.

  • On peut alors toucher ou modifier un des deux fichiers sans que cela ait un impact sur l'autre.

  • La mise en cache est proposée et permet ainsi d'économiser les ressources des serveurs avec la possibilité de configurer le tout.

Inconvénients
  • Son utilisation va retarder le chargement de votre page, mais il sera compensé en partie par Smarty, un moteur de template assez rapide.

  • Il faut étudier le langage de template.

  • La lecture des erreurs est assez compliquée.

Smarty, moteur de template, est donc celui que j'ai décidé de vous présenter pour ses capacités très puissantes et son utilisation très facile pour les débutants. Il a l'avantage d'être très rapide : Smarty recompile les fichiers uniquement si des changements sont apportés dans le fichier de template. Nous verrons donc ensemble au cours des autres sous-parties comment afficher une variable d'un fichier à l'autre, modifier des variables grâce à des modificateurs et créer une fonction utilisateur dans Smarty pour les plus valeureux, ce que nous verrons au fur et à mesure.

Installation et mise en place

Logo de Smarty

Télécharger et installer

Pour télécharger la bête, rien de plus facile ; de plus, son installation est vraiment aisée. Rendez-vous sur la page Download où se trouvent les versions bêta et release de Smarty, et faites votre choix (téléchargez bien sûr la dernière version stable).

La version sur laquelle se base le tutoriel est la 3ème, récemment sorti elle contient bon nombre de nouveauté.

Le téléchargement est très rapide. Décompressez les fichiers et ouvrez le dossier libs, qui contient le cœur du moteur et les principaux fichiers qui nous serviront tout au long de ce tutoriel. Copiez-les dans un dossier à la base de votre projet que nous appellerons ici tpl.

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

Première utilisation

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éez un fichier PHP index.php à la racine de votre projet et commencez par y ouvrir les balises PHP. Nous allons débuter par l'inclusion de la classe qui permet à Smarty de fonctionner.

<?php require("tpl/smarty.class.php"); // On inclut la classe Smarty ?>

Voilà qui est fait. Et maintenant ?
Smarty est codé en POO (programmation orientée objet) ; si vous souhaitez obtenir plus d'informations sur la programmation orientée objet, je vous conseille le tutoriel de vyk12. Si vous avez du temps, n'hésitez pas à le lire, il vous permettra de mieux comprendre comment fonctionne Smarty et pourquoi vous faites telle ou telle action dans votre code.
Si vous avez lu le tutoriel conseillé, je pense que vous savez déjà ce qu'il faut faire : j'ai nommé la création de l'objet Smarty.

<?php $smarty = new Smarty(); ?>

Comme nous commençons très doucement, la prochaine ligne servira à l'affichage d'une page .html ou .tpl suivant votre envie. Pour cela, il suffit d'utiliser la fonction display qui permet de charger une page.

<?php $smarty->display("mapage.html"); ?>

Voici le strict minimum pour afficher une page ; cela doit être la base de chaque page liée à Smarty.
Ah, oui ! j'oubliais : si vous voulez que tout marche, pensez à créer la page .tpl ou .html, et d'y ajouter le contenu que vous souhaitez : la structure HTML, le design…

Hello World!

Lancez la page PHP depuis votre navigateur et il vous affichera un joli « Hello World! ».

Il est conseillé de nommer la page de template comme la page PHP, cela permet de retrouver immédiatement le fichier de template assigné au fichier PHP.

Les bases

Nous allons voir dans cette sous-partie tout ce qu'il faut savoir pour bien commencer l'apprentissage de Smarty.

Le merveilleux monde des 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 news.html.

Astuce. — Pour faciliter la transmission des informations et éviter d'écrire une dizaine d'assign dans votre code, privilégiez les <?php array(); ?> dans les assign.

<?php> $core->tpl->assign(array("1" => 1, "2" => 2, "3" => 3, "4e" => 4)); ?> <?php require("tpl/smarty.class.php"); $tpl = new Smarty(); $tpl->assign("ma_variable","Je suis une variable"); $tpl->assign(array( "une_variable" => "Je suis une variable", "une_autre_variable" => "Je suis une belle variable" // ... )); $tpl->display("index.html"); ?>

Passons maintenant à index.html. Smarty utilise dans les templates des délimitations, les accolades {}, autour d'une variable, d'une condition, etc. Pour afficher les variables « envoyées » par le fichier PHP, il suffit alors d'écrire le nom de la variable et de la délimiter par des accolades, ce qui donne par exemple :

- <strong>{$ma_variable}</strong> <br /> - {$une_variable} <br /> - {$une_autre_variable}

Pour aller encore plus loin avec les variables, sachez qu'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 (c'est ce que nous allons apprendre à faire dans la partie « Mode avancé » de ce tutoriel). 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.

p, div{ text-transform: capitalize; }

Pour mettre en place les modificateurs, rien de plus simple : il suffit de placer une barre verticale | (Alt Gr + 6) 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).

- {$une_variable|capitalize:true} <br />

Smarty possède également des modificateurs assez pratiques pour tronquer la variable, la mettre en minuscules, ajouter un texte à la fin et bien d'autres choses. Je vous propose un petit tableau dans lequel vous trouverez tous les modificateurs les plus utiles. Si cela ne fait pas votre bonheur, je vous conseille de vous diriger vers la documentation de Smarty. Les modificateurs peuvent bien sûr être utilisés autant de fois que vous le voulez sur une variable, il suffit juste de les ajouter comme s'il n'y avait rien devant.

Nom

Utilité

Équivalent (PHP ou CSS)

Exemple

cat

Permet d'ajouter une valeur à la fin d'une variable.

<?php $var . "texte"; ?>

{$var|cat:"texte"}

date_format

Permet de mettre une date dans un format spécial.

<?php date($date,"%d/%m/%Y"); ?>

{$date|date_format:'%d/%m/%Y'}

lower

Met le contenu de la variable en minuscules.

p{text-transform: lowercase;}

{$petit|lower}

replace

Remplace un élément en un autre dans toute la chaîne.

<?php str_replace("o", "au", $toto); ?>

{$toto|replace:"o":"au"}

spacify

Permet d'ajouter une espace — ou un caractère s'il est spécifié — entre chaque lettre.

{$ajouter|spacify}

string_format

Permet d'arrondir un chiffre.

<?php round($nbr); ?>

{$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); ?>

{$coupe|truncate:30}

upper

Permet de mettre toutes les lettres en capitales.

p{text-transform: uppercase;}

{$maj|upper}

Pour finir dans le monde des variables, je vais vous donner une dernière information qui va vous simplifier grandement la vie. Les variables Smarty sont l'équivalent des $_GET, $_POST et autres dans le code PHP.
Pour les utiliser, il suffit d'écrire {$smarty suivi de la méthode (.get) et de l'élément que l'on veut...

Appeler le centre

Avez-vous besoin d'un coach de formation?

Il vous aidera à comparer différents cours et à trouver la solution la plus abordable.

Un moteur de template : Smarty

Prix sur demande