Citation

J’ai toujours rêvé d'un ordinateur qui soit aussi facile à utiliser qu'un téléphone. Mon rêve s'est réalisé : je ne sais plus comment utiliser mon téléphone.

Bjarne Stroustrup

vendredi 11 janvier 2013

FuelPHP Pas à pas #5 - template

Un site doit avoir une unicité dans le rendu graphique, c'est la charte graphique du site. Le principe utilisé dans la plupart des cas est l'utilisation d'un template dans lequel on a réservé des emplacements pour afficher des contenus différents.

Création d'un contrôleur utilisant un template

Pour utiliser un template, il faut partir de la classe Controller_Template. Cette classe possède un attribut $template représentant l'objet template
Voila le code de notre contrôleur et de son action index:

<?php
class Controller_Step5 extends Controller_Template{
   public function action_index(){
      $this->template->title = 'Step5->Index';
      $this->template->content = View::forge('step5/index');
   }
}


On reconnait l'appel à View::forge() qui charge le fichier APPPATH/views/step5/index.php comme contenu.
$this->template est l'objet template, ses attributs sont les champs que l'on affichera dans le template, comme déjà fait précédemment.
On va aussi créer le contenu en utilisant un bout de code HTML contenu dans APPPATH/views/step5/index.php :

<h2>Index</h2>
Contenue de APPPATH/views/Step5/index.php


C'est très basique et ça ressemble à ce que l'on a déjà écrit.

Création du template

On va créer le template dans le répertoire APPPATH/views et il s’appellera template.php. Voila son code:

<?php echo Html::doctype('xhtml1-strict');?>
<html>
<head>
    <meta charset="utf-8">
    <title><?php echo $title; ?></title>
</head>
<body>
   <h1 style="background-color: red"><?php echo $title; ?></h1>
    <hr>
   <?php echo $content; ?>
</body>
</html>


Rien de bien compliqué, juste l'affichage de 2 variables $title et $content. Cela ressemble fortement à ce que l'on a déjà écrit. Si on va à l'adresse http://localhost/fuelphp/public/step5 on se retrouve avec une page affichant un bandeau rouge avec le titre.

Utilisation du template pour plusieurs pages

Mais c'est quoi la différence avec ce que l'on a fait avant ? Et bien on va ajouter une autre action au contrôleur Step5 qui affichera un autre contenu. Le code de l'action sera par exemple :

   public function action_index2(){
      $this->template->title = 'Step5->Index2';
      $this->template->content = 'Ceci est le contenu de index2';     
   }


Si on va à l'adresse http://localhost/fuelphp/public/step5/index2 on a un contenu différent mais avec la même charte graphique que précédemment et tous ca en ayant juste codé une action. Le contenu est différent mais l'aspect est le même. On a bien le principe du template.

Mettre le fichier template "ailleurs"

On peut spécifier le nom du fichier template et même son emplacement en définissant la vriable public $template de Controller_Step5 :

<?php
class Controller_Step5 extends Controller_Template{

  public $template = 'step5/templateStep5';

Il faut alors déplacer le fichier template.php dans le répertoire APPPATH/views/step5 et le renommer en templateStep5.php

Premier pas avec OIL

Comme beaucoup de framework PHP, FuelPHP possède un utilitaire de génération de code, ici il s'appel OIL et se trouve dans le répertoire racine. C'est un utilitaire en ligne de commande, dommage que ce ne soit pas une page web cela aurait été plus agréable.
L'utilisation de OIL se fait en lançant depuis la ligne de commande :

php oil

avec php l’exécutable php (php.exe sous windows). J'utilise un petit script oil.cmd qui permet de s'affranchir du problème du path pour trouver php.exe:

@echo off
set PHP=C:\php5.3.13\php.exe
%PHP% oil %*


Maintenant, avec ce petit script, il suffit de tapper oil.cmd (ou oil tout cour) pour utiliser le générateur.
"oil help" permet d'afficher l'aide du programme, sinon il faut aller voir du coté de l'aide d'oil : http://fuelphp.com/docs/packages/oil/intro.html

Génération d'un contrôleur

On va générer un contrôleur grâce à oil. Le contrôleur aura pour nom Step5bis et 2 actions, index et index2 (oui, j'ai beaucoup d'imagination). Sur la ligne de commande, on tape:

oil g controller Step5bis index index2

La commande répond:
Creating view: C:\wamp\www\fuelphp\fuel\app\views/template.php
Creating view: C:\wamp\www\fuelphp\fuel\app\views/step5bis\index.php
Creating view: C:\wamp\www\fuelphp\fuel\app\views/step5bis\index2.php
Creating controller: C:\wamp\www\fuelphp\fuel\app\classes\controller\step5bis.php


Voila plusieurs fichiers sont créés. Si on va à l'adresse http://localhost/fuelphp/public/step5bis ou http://localhost/fuelphp/public/step5bis/index2 on obtient 2 belles pages. Si on regarde le code généré, on retrouve tous les ingrédients cité dans cet article.

Aucun commentaire:

Enregistrer un commentaire