Class personnelle pour l'utilisation de Twig

Une partie qui peut ne pas être très pratique à gérer avec Twig, c'est bien tout ce qui concerne l'envoi des informations. Nous devons en effet envoyer toutes les variables d'un seul coup (header, menu, contenu, ...).

Cela peut facilement devenir un très gros tableau, et pour ne pas rendre le code PHP illisible, je me suis créé une petite class qui s'occupe de sauvegarder au fur et à mesure mes variables, et de les envoyer à Twig à la fin :

 1 //+ Maigret Aurélien
 2 //@ https://www.dewep.net
 3 class RenderTwig
 4 {
 5     protected $arguments;
 6     protected $template_name;
 7 
 8     public function __construct()
 9     {
10         $this->arguments = array();
11     }
12 
13     public function setVar($key, $value)
14     {
15         $this->arguments[$key] = $value;
16     }
17 
18     public function getVar($key)
19     {
20         if (isset($this->arguments[$key]))
21         {
22             return ($this->arguments[$key]);
23         }
24         return (false);
25     }
26 
27     public function getVars()
28     {
29         return ($this->arguments);
30     }
31 
32     public function cleanVars()
33     {
34         $this->arguments = array();
35     }
36 
37     public function setTemplate($template_name)
38     {
39         $this->template_name = $template_name;
40     }
41 
42     public function render($force_template_name = false)
43     {
44         if ($force_template_name)
45             $this->template_name = $force_template_name;
46         if (empty($this->template_name))
47             return (false);
48 
49         require_once ('twig/lib/Twig/Autoloader.php');
50         Twig_Autoloader::register();
51 
52         $loader = new Twig_Loader_Filesystem("templates");
53         $twig = new Twig_Environment($loader, array(
54             'cache' => false,
55             'autoescape' => true
56         ));
57 
58         $template = $twig->loadTemplate($this->template_name);
59         return $template->render($this->arguments);
60     }
61 }

Un petit exemple d'utilisation :

1 $render = new RenderTwig();
2 
3 $render->setVar("titre", "Titre de ma page");
4 $render->setVar("menu", array("Accueil", "Page 1", "Page 2", "Contact"));
5 $render->setVar("contenu", "Contenu ...");
6 
7 $render->setTemplate("demo.html");
8 echo $render->render();

PHP Twig

Article publié le 7 Août 2013.

Commentaires