FuelPHP et Twig, comme larrons en foire

Comme on se retrouve ! J’avais justement envie de vous parler de deux choses, ou plutôt d’une chose contenue dans une autre, ou manipulée par une autre, ou inversement – bon, je m’embrouille – J’avais envie de vous parler de FuelPHP et Twig, voilà !

FuelPHP et Twig donc, aussi inséparables et complémentaires que du pain et des rillettes, qu’un hipster et le dernier iPhone, qu’un verre de vin rouge et un âtre de cheminée, que des toilettes d’autoroute et l’odeur d’urine tiède (arrêtez-moi par pitié !)… Je vais vous expliquer comment les faire marcher ensemble, ces deux petits gars, mais avant, et pour ceux qui ne connaîtraient pas, parlons un peu de l’un et de l’autre, ça fait pas de mal (surtout que je suis assez fan de Fuel, et comme vous risquez d’en entendre parler souvent, autant voir un peu ce que c’est).

FuelPHP

FuelPHP donc, c’est un framework PHP, qui, selon l’équipe de dev, « reprend toutes les bonnes idées existantes, sur une nouvelle base ». Il est développé en PHP 5 et la dernière version est actuellement la 1.7.3. Ce framework est léger, puissant, modulaire et développé intelligemment (c’est pas pour rien que c’est mon chouchou !). Parmi ses fonctionnalités majeures, on retrouve une ORM, un shell interactif puissant qui embarque notamment du Scaffolding à la Ruby On Rails, un parser supportant smarty, mustache, haml, twig, dwoo et lex, une gestion des packages des plus efficientes ainsi que plein d’autres choses (une gestion d’authentification simple ou avancée, un package d’email supportant mandrill et mailgun, et des classes pour à peu près tout ce dont vous pourriez avoir besoin).

Je vais arrêter là mon envolée lyrique pour ne pas trop allonger cet article, et pour ne pas donner l’impression que j’ai été payé pour faire leur com’… mais sachez que j’y reviendrai de toute façon assez fréquemment dans ce blog. Passons maintenant à…

Twig

Twig est un moteur de template écrit en PHP. A priori, si vous lisez mon blog c’est que vous savez probablement déjà de quoi il s’agit, mais bon, long story short : un moteur de template est un système qui permet, dans une organisation MVC ou HMVC, d’avoir une syntaxe plus légère et mieux adaptée à l’affichage que le php, et ne contenant aucune logique. Twig est développé par Fabien Potencier (le développeur derrière Symfony), et supporté par SensioLabs. C’est un moteur de template que j’aime pour la simplicité de sa syntaxe, sa rapidité et sa flexibilité. Sa documentation, bien qu’organisée de manière un peu bizarre, renferme toutes les infos nécessaires pour se lancer.

Installer FuelPHP

Si vous n’êtes pas familier de FuelPHP, je vous laisse faire un peu joujou avec, cet article partant du principe que vous avez un minimum de connaissances sur le framework pour suivre. (Et que vous êtes sur un debian. Si ce n’est pas le cas, c’est tout aussi simple mais je vous laisserai le faire tout seul). Bon, revenons à nos moutons, on va partir sur une « fresh install », ça va être très dur comme vous allez vite le constater. Prenez un terminal, placez-vous dans le répertoire parent de votre projet et entrez :

curl get.fuelphp.com/oil | sh

Puis

oil create project_name

Voilà. Terriblement compliqué n’est ce pas ? oil va créer le répertoire, fixer ses permissions, importer Fuel dedans, lancer l’update de Composer, et aura même la décence de se déplacer lui-même pour ne pas vous laisser avec un fichier « oil » dans le répertoire parent de votre projet.

À ce moment-là, si votre virtualserver est bien configuré et que vous vous rendez à son adresse dans votre navigateur, vous allez tomber sur la page d’exemple de FuelPHP (welcome). Si ce n’est pas le cas, quelque chose s’est mal passé quelque part (thx captain). Une piste à tout hasard : le dossier racine de votre virtualserver doit être le dossier « project_name/public » et non « project_name ». Maintenant, il ne nous reste plus qu’a…

Installer Twig

Placez-vous à la racine du projet. Vous avez un dossier fuel/, un dossier public/, et les fichiers composer.phar et composer.json. Ouvrez le fichier composer.json. Je ne le vous mets pas en entier mais juste la partie qui nous intéresse, à savoir :

"require": {
    "php": ">=5.3.3",
    "composer/installers": "~1.0",
    "fuel/docs": "dev-1.7/master",
    "fuel/core": "dev-1.7/master",
    "fuel/auth": "dev-1.7/master",
    "fuel/email": "dev-1.7/master",
    "fuel/oil": "dev-1.7/master",
    "fuel/orm": "dev-1.7/master",
    "fuel/parser": "dev-1.7/master",
    "fuelphp/upload": "2.0.2",
    "monolog/monolog": "1.5.*",
    "michelf/php-markdown": "1.4.0"
},

Le bloc « require » se charge d’importer les dépendances de Fuel. Ajoutez cette ligne dans le bloc  :

"twig/twig": "1.22.3"

1.22.3 étant la dernière version à l’heure ou j’écris ces lignes, remplacez-le par la dernière version stable, visible sur l’accueil du site de Twig.

Maintenant, pour que FuelPHP importe Twig dans /fuel/vendor, un simple

php composer.phar update

C’est pas beau ? Maintenant, il faut charger le package parser automatiquement à l’initialisation du framework. Rendez-vous dans fuel/app/config/config.php. Localisez l’index « always_load » (commenté par défaut, dé-commentez-le), vous allez trouver ce bout de code quelque part :

// 'packages' => array(
// //'orm',
// ),

Il ne vous reste plus qu’a dé-commenter ce bloc et ajouter le package parser. A vous de voir si vous allez activer le chargement automatique de l’ORM, mais c’est pas le sujet. Votre bloc devrait maintenant ressembler à ça :

'packages' => array(
    'orm',
    'parser'
),

Sauvegardez ce fichier, et voilà, Twig est prêt à être utilisé (au chargement d’une vue avec View::forge('/un_dossier/ma_vue.twig), l’extension .twig doit être précisée contrairement au .php qui est automatique si non précisé.

Une dernière chose

FuelPHP (enfin, le package parser) contient une classe nommée Twig_Fuel_Extension qui apporte à Twig les fonctions de Fuel les plus utiles, son emplacement est fuel/packages/parser/classes/twig/fuel/extension.php

Laissez-moi vous expliquer un petit quelque chose à propos de Fuel : chaque classe, vue ou fichier de conf intégré au framework que vous voulez modifier ne doit pas être modifié directement dans /fuel/core ou fuel/packages, sous peine d’être écrasé et de tout planter à la moindre mise à jour. Il doit être déplacé dans fuel/app et modifié à cet endroit (fuel/app/classes pour une classe, /fuel/app/config pour un fichier de conf, et fuel/app/views pour une vue. Étonnant n’est-ce pas ?)

C’est donc ce que nous allons faire avec notre classe Twig_Fuel_Extension. Copiez ce fichier et collez-le dans fuel/app/classes/twig/fuel/extension.php. Comme c’est une extension de la classe d’origine, retirez également le namespace et les use :

namespace Parser;

use Router;
use Uri;
use Twig_Extension;
use Twig_Function_Function;
use Twig_Function_Method;

Et c’est tout bon. Vous pouvez maintenant faire vos modifications pour ajouter des fonctions à Twig directement dans cette classe.

C’est la fin de cet article, j’espère qu’il vous aura plus, n’hésitez pas à réagir dans les commentaires.

Sources

Site de FuelPHP : http://fuelphp.com

Documentation de FuelPHP : http://fuelphp.com/docs

Site de Twig : http://twig.sensiolabs.org/

Documentation de Twig : http://twig.sensiolabs.org/documentation

 

Adam Écrit par :

Développeur web et webdesigner en Freelance passionné de code et de design. Autodidacte et amoureux de la connaissance, je suis curieux et passe mon temps à apprendre de nouvelles choses, que j'ai envie de vous faire partager !

Soyez le premier à commenter

    Laisser un commentaire

    Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *