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 templateVoila 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