PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Nicolas Lœuillet : Comment utiliser Twig avec le framework Slim

mardi 30 juillet 2013 à 13:47

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 ... de Sensio (ça devient lassant, ça, ils font que des trucs bien ou quoi ?).

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 :

Vous devez créer un fichier index.php :

 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 templates[1] à 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 :

  1. il faut installer Twig en fait. Slim-Views ne s’en charge pas
  2. 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 !

Note

[1] si vous souhaitez un autre répertoire, ça se change assez facilement

Gravatar de Nicolas Lœuillet
Original post of Nicolas Lœuillet.Votez pour ce billet sur Planet Libre.