Comment utiliser Twig avec le framework Slim
Parce que je dois remettre les mains dans la poche, je fais le tour des micro framework existants. Après un rapide tour d'horizon, il ne doit en rester que deux :
On m'a dit du bien de silex. Du coup, je teste Slim pour voir si c'est pas mal aussi.
Concernant la partie vues, il est possible d'embarquer Twig.
Voici comment configurer votre application pour que ça fonctionne.
Installation de Slim
Il est vivement conseillé de l'installer via le composer. La doc est bien renseignée : http://docs.slimframework.com/#Installation.
Mais nous allons faire quelques modifications. Puisque nous allons utiliser Slim-Views pour utiliser Twig, vous pouvez donc renseigner votre composer.json comme ça :
{ "require": { "slim/slim": "2.*", "slim/views": "0.1.*" } }
Vous avez donc cette arborescence :
- \\vendor
- \\vendor\\composer
- \\vendor\\slim
- \\vendor\\slim\\slim...
- \\vendor\\slim\\views...
- \\vendor\\autoload.php
- \\composer.json
- \\composer.lock
- \\composer.phar
Vous devez créer un fichier index.php :
<?php require 'vendor/autoload.php'; $app = new \\Slim\\Slim(array( 'view' => new \\Slim\\Views\\Twig() )); $app->get('/', function () use ($app) { $app->render('home.html'); }); $app->run();
Pensez donc à créer un fichier home.html dans un répertoire templates1 à la racine de votre projet.
Si vous exécutez votre code à ce moment donné, voici le genre d'erreur que vous rencontrerez :
[error] [client 127.0.0.1] PHP Warning: Uncaught exception 'ErrorException' with message 'require_once(/Autoloader.php): failed to open stream: No such file or directory' in /home/nico/Dev/slim/vendor/slim/views/Slim/Views/Twig.php:114\\nStack trace:\\n#0 /home/nico/Dev/slim/vendor/slim/views/Slim/Views/Twig.php(114): Slim\\\\Slim::handleErrors(2, 'require_once(/A...', '/home/nico/Dev...', 114, Array)\\n#1 /home/nico/Dev/slim/vendor/slim/views/Slim/Views/Twig.php(114): Slim\\\\Views\\\\Twig::getInstance()\\n#2 /home/nico/Dev/slim/vendor/slim/views/Slim/Views/Twig.php(85): Slim\\\\Views\\\\Twig->getInstance()\\n#3 /home/nico/Dev/slim/vendor/slim/slim/Slim/View.php(252): Slim\\\\Views\\\\Twig->render('home.html')\\\\n#4 /home/nico/Dev/slim/vendor/slim/slim/Slim/View.php(242): Slim\\\\View->fetch('home.html')\\n#5 /home/nico/Dev/slim/vendor/slim/slim/Slim/Slim.php(742): Slim\\\\View->display('home.html')\\n#6 /home/nico/Dev/slim/index.php(11): Slim\\\\Slim->render('home.html')\\n#7 [internal function]: {closure}()\\n#8 /home/nico/Dev/slim/vendor/slim/slim/Slim/Route.php(436): call_user_func_a in /home/nico/Dev/slim/vendor/slim/views/Slim/Views/Twig.php on line 114 [error] [client 127.0.0.1] PHP Fatal error: Slim\\\\Views\\\\Twig::getInstance(): Failed opening required '/Autoloader.php' (include_path='.:/usr/share/php:/usr/share/pear') in /home/nico/Dev/slim/vendor/slim/views/Slim/Views/Twig.php on line 114
Deux choses :
- il faut installer Twig en fait. Slim-Views ne s'en charge pas
- il faut paramétrer Slim-Views pour lui indiquer le chemin de votre installation de Twig
Installation de Twig
Téléchargez-le et copiez / collez le répertoire Twig (présent dans lib/) à la racine de votre application.
Paramétrage de Slim-Views
Avant d'exécuter votre application, ajoutez ces deux lignes :
$view = $app->view(); $view->parserDirectory = 'Twig';
Voila, ça devrait maintenant fonctionner. Bon amusement !
-
si vous souhaitez un autre répertoire, ça se change assez facilement ↩