Easy-Micro

LANGAGE MVC PHP
Template de page

Utilisez une architecture MVC en PHP : Créer un template de page

Inclure des blocs de page

La première approche, que vous connaissez sûrement, consiste à créer des blocs de page dans des fichiers PHP différents avec, par exemple header.php et footer.php
<?php require('header.php'); ?>

<h1>Mon super blog !</h1>

<p>Contenu de la page</p>
        
<?php require('footer.php'); ?>

Créer un template

On va créer un template (aussi appelé gabarit) de page. On va y retrouver toute la structure de la page, avec des "trous" à remplir.

template.php :
<!doctype html>
<html>
    <head>
        <meta charset="utf-8">
        <title><?= $title ?></title>
        <link href="style.css" rel="stylesheet"> 
    </head>   
    <body>
        <?= $content ?>
    </body>
</html>
Il y a 2 "trous" à remplir dans ce template : le <title> et le contenu de la page.

Création de la vue

Il faut maintenant définir ce qu'on met dans ces variables. Voici comment on peut le faire dans la vue indexView.php qui affiche la liste des derniers billets :

indexView.php
<?php $title = 'Mon blog'; ?>

<?php ob_start(); ?>
<h1>Mon super blog !</h1>
<p>Derniers billets du blog :</p>

<?php
while ($data = $posts->fetch()) {
?>
    <div class="news">
        <h3>
            <?= htmlspecialchars($data['title']) ?>
            <em>le <?= $data['creation_date_fr'] ?></em>
        </h3>
        
        <p>
            <?= nl2br(htmlspecialchars($data['content'])) ?>
            <br>
            <em><a href="post.php?id=<?= $data['id'] ?>">Commentaires</a></em>
        </p>
    </div>
<?php
}
$posts->closeCursor(); //libère la connexion au serveur
?>
<?php $content = ob_get_clean(); ?>

<?php require('template.php'); ?>
on utilise ci-dessus l'astuce du ob_start() et ob_get_clean() qui nous sert juste à mettre facilement beaucoup de code HTML dans une variable : On appelle la fonction ob_start() qui "mémorise" toute la sortie HTML qui suit, puis, à la fin, on récupère le contenu généré avec ob_get_clean() et on met le tout dans $content .


> Voir cet exemple Easy-Micro


Flux RSS Easy-Micro - Abonnez-vous Easy-Micro [ François Bisch ]