Utilisation De Twig, Un Moteur De Templates - Site Du Zéro - Tutoriels

Twig n'est pas le seul moteur de templates qui existe, et ce n'est pas non plus le meilleur. C'est un moteur parmi tant d'autres. Au même titre que Twig, ce cours n'est pas le seul à traiter du sujet. Vous pouvez également lire ces tutoriels :

  • Utilisation d'un moteur de templates : Talus' TPL

  • Un moteur de template : Smarty

Présentation

Je vais ici vous expliquer le fonctionnement d'un "moteur de templates". Pour cela, je vous propose un exemple : la création d'un blog basique. L'organisation des fichiers que je vous propose ici est personnelle, c'est normal si pour vous la conception d'un blog est différente. Les grandes lignes sont là.

Pour créer votre blog, vous allez d'abord récupérer votre contenu stocké en base de données. Vous allez ensuite afficher via une boucle les différents articles. Dans certains cas, vous incluez aussi un en-tête et un pied de page.

<?php include 'inc/header.php'; ?> <?php $articles = $db->query('SELECT * FROM blog'); while($article = $articles->fetch()) { ?> <div class="article"> <div class="title"><?php echo $article['title']; ?></div> <div class="content"> <?php echo $article['content']; ?> </div> </div> } <?php include 'inc/footer.php'; ?>

Je n'explique pas ce code. Il est relativement simple.

Le moteur de templates va vous obliger à utiliser deux fichiers (plus si vous utilisez le modèle MVC). Vous allez d'une part avoir un fichier PHP avec l'obtention du contenu en base de données, des variables, la gestion des sessions, etc. et un fichier template qui gérera l'affichage de vos pages. Normalement, plus aucun code HTML ne doit apparaître dans vos fichiers PHP.

Voici donc ce que pourrait donner notre exemple précédent avec un moteur de templates :

<?php include 'inc/header.php'; ?> <?php $articlesQuery = $db->query('SELECT * FROM blog'); $articles = $articlesQuery->fetchAll(); $template = $twig->loadTemplate('blog.twig'); echo $template->render(array( 'articles' => $articles, )); ?> <?php include 'inc/footer.php'; ?>{% for key, article in articles %} <div class="article"> <div class="title">{{ article.title }}</div> <div class="content"> {{ article.content }} </div> </div> {% endfor %}

Je n'explique pas ce code pour le moment car vous allez apprendre cette syntaxe dans la suite du cours.

Pourquoi utiliser un moteur de templates ?

Depuis tout à l'heure je vous parle de Twig et je viens même de vous montrer les grandes lignes de son fonctionnement. Mais vous vous demandez peut-être pourquoi utiliser un moteur de templates ? Quel(s) avantage(s) peut-on avoir à l'utiliser par rapport à du PHP "classique" ?.

On peut y voir plusieurs avantages notables :

  • Le code est plus clair : on sait où est le code HTML et on ne doit pas chercher après dans le code PHP

  • Pour reprendre la phrase du dessus on peut noter le fait que vous savez quel fichier éditer quand vous savez d'où vient l'erreur. De plus pour reprendre l'exemple du blog, si un jour vous voulez modifier simplement l'affichage des billets, vous savez quelle partie du code éditer et vous n'avez pas à chercher.

  • Si vous travaillez avec un graphiste, c'est un réel plus. Les graphistes connaissent généralement HTML et CSS et pas toujours PHP. Le graphiste s'y retrouve donc beaucoup plus facilement.

Je pourrais en citer d'autres mais je pense que ce sont les plus importants qui m'ont fait adopter un tel système pour des sites de petites et moyennes tailles.

Si je vous ai convaincu, je vous propose de lire la suite de ce cours pour voir comment mettre en place Twig.

  • Utilisation de Twig, un moteur de templates !
    • Qu'est ce qu'un moteur de templates ?
    • Mise en place
    • Notre premier template
    • Syntaxe de base
    • Quelques ajouts pratiques
    • Fonctionnalités côté PHP

Tag » Apprendre Twig