3. L'affichage des informations

En PHP, il est possible d'intégrer dans la même page aussi bien du code HTML que JAVASCRIPT ou PHP. En général, les pages deviennent vite illisibles. Pour pallier ce problème, il est préférable de séparer les différentes logiques. Nous allons faire appel aux moteurs de gabarits, ou templates, pour gérer l'affichage, et plus particulièrement au plus connu d'entre eux, SMARTY.

Le traitement de l'affichage va être réalisé ainsi :

    • le navigateur demande l'exécution d'un script PHP (1) ;
    • le script fait appel à différents modules de l'application pour traiter les opérations demandées (appel de classes, lecture d'informations en bases de données...) (2) ;
    • chaque fois que le script a besoin d'envoyer des informations à afficher, il fait appel à un module particulier qui a en charge l'affichage (3) ;
    • et enfin, une fois l'exécution du script terminée, c'est le module d'affichage qui envoie la page HTML vers le navigateur (4).

Pour reprendre l'affichage de la liste des bénéficiaires, voici comment nous allons pouvoir coder, en utilisant SMARTY :

include_once('Smarty-2.6.26/libs/Smarty.class.php');

$SMARTY_template ='templates';

$SMARTY_template_c = 'templates_c';

$SMARTY_config = 'param/configs_smarty';

$SMARTY_cache_dir = 'smarty_cache';

$SMARTY_cache = FALSE;

if (!isset($smarty)){

$smarty = new Smarty;

$smarty->template_dir = $SMARTY_template;

$smarty->compile_dir = $SMARTY_template_c;

$smarty->config_dir = $SMARTY_config;

$smarty->cache_dir = $SMARTY_cache_dir;

$smarty->caching = $SMARTY_cache;

}

include('beneficiaire.class.php');

$beneficiaire = new Beneficiaire($bdd);

$list=$beneficiaire->lire($_REQUEST['id']);

$smarty->assign("nom",$list["Nom"]);

$smarty->assign("prenom",$list["Prenom"]);

$smarty->display("beneficiaireSaisie.tpl");

Les lignes 1 à 14 permettent d'initialiser la classe SMARTY.

La page HTML, qui va permettre d'afficher le nom et le prénom, va ressembler à ceci :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-15">
<title>Test d'affichage des informations sur le bénéficiaire</title>
</head>
<body>
Nom du bénéficiaire : {$nom}
<br>
Prénom : {$prenom}
</body>
</html>

Les variables et commandes SMARTY sont encadrées par des accolades. Les variables sont précédées du signe $.

Pour afficher la liste des bénéficiaires, le code PHP sera modifié ainsi :

$list=$beneficiaire->getListe();
$smarty->assign("list",$list);

et le gabarit sera adapté, pour afficher la liste dans un tableau. Nous utilisons, pour parcourir l'ensemble du tableau, l'objet section :

<table id='listeBeneficiaire'>

<tr>

<th>Nom du Bénéficiaire</th>

<th>Prénom</th>

</tr>

{section name=boucle loop=$list}

<tr>

<td>{$list[boucle].nom}</td>

<td>{$list[boucle].prenom}</td>

</tr>

{/section}

</table>

Chaque item de notre tableau $list est identifié par $list[boucle], boucle étant le nom de notre section (attribut name), et correspond à l’occurrence courante.

Les différentes fonctions utilisables dans les gabarits :

Toutes les balises de type test, encadrement de bloc, gestion de boucle... doivent être fermées par des balises de fermeture. Ainsi, la balise {if} doit être fermée par {/if}.

Les fonctions Smarty peuvent être insérées n'importe où dans le gabarit, y compris au sein de balises HTML, y compris à l'intérieur de texte entre quottes.