Accueil > Programmation > PHP > CodeIgniter > Utiliser les templates dwoo avec codeigniter
Utiliser les templates dwoo avec codeigniter
mercredi 25 avril 2012, par
Les vues de codeIgniter, c’est pratique mais un peu basique. Nous allons ajouter le moteur de template "dwoo" à notre framework préféré pour le rendre un peu plus sexy. Pour cela, nous allons suivre le tutoriel de Phil Sturgeon.
Tout d’abord, téléchargeons la dernière version de dwoo sur le site officiel. Décompressez le répertoire "Dwoo" dans le répertoire "libraries" de votre application.
Récupérez ensuite le code de Phil et copiez le fichier "parser.php" dans votre répertoire "config" et "MY_Parser.php" dans votre répertoire "libraries".
Vous vous rendrez compte que ce fichier MY_Parser comporte deux erreurs. Vous devrez commenter la ligne 146
//$data = array_merge($data, $this->_ci->load->_ci_cached_vars);
et modifier la ligne 158 :
$string = str_replace(array('{elapsed_time}', '{memory_usage}'), array('[elapsed_time]', '[memory_usage]'), $string);
Créez ensuite le répertoire "application/cache/dwoo/compiled". Sivous êtes sous linux, vous devrez mettre les droits en écriture dessus.
Utilisation
Pour activer ce parser, on doit avoir le code suivant dans son contrôleur :
Pareil que le parser de base, en somme !!
La syntaxe de Dwoo
Pour ceux qui connaissent, la syntaxe est proche de celle de smarty. Pour ceux qui ne connaissent pas, cela permet de simplifier l’écriture des vues en évitant tous les
- <?php echo $monTexte; ?>
Pour afficher le contenu de variables :
contrôleur :
- $this->load->library('parser');
- $var1 = 'Mon texte';
- $var4 = new stdClass();
- $var4->type='chat';
- $var4->pattes=4;
- $var4->moustaches=true;
- $var4->alimentation='croquettes';
- $this->parser->parse('test', array('data1' => $var1, 'data2' => $var2, 'data3' => $var3, 'data4' => $var4));
et dans la vue :
- 1 : {$data1}<br />
- 2-1 : {$data2.1}<br />
- 2-2 : {$data2.2}<br />
- 2-3 : {$data2.3}<br />
- 3-France : {$data3.France}<br />
- 3-UK : {$data3.UK}<br />
- 3-Allemagne : {$data3.Allemagne}<br />
- 4->type : {$data4->type}<br />
- 4->pattes : {$data4->pattes}<br />
- 4->moustaches : {$data4->moustaches}<br />
- 4->alimentation : {$data4->alimentation}<br />
On peut également coder des instructions conditionnelles et des boucles :
- {if $data4->moustaches}
- Il a des moustaches
- {else}
- Il n'a pas de moustaches
- {/if}
Pour les boucles, on a plusieurs choix :
- loop (qui correspond à un for, mais qui nécessite obligatoirement un indice numérique et que l’on connaisse la structure de chaque occurrence.
- foreach qui correspond à son homologue PHP.
- for
Loop :
Si on passe le tableau suivant au template :
on va pouvoir accéder aux données du tableau avec ce code :
- {loop $var5}
- {$pays} - {$capitale} <br />
- {/loop}
Foreach :
C’est exactement la même syntaxe qu’en PHP. Par exemple pour mon tableau $var3 :
- 'UK' => 'Londres',
- 'Allemagne' => 'Berlin');
je peux boucler de cette façon :
- {foreach $data3 nompays, donneespays}
- {$nompays} - {$donneespays} <br />
- {/foreach}
La syntaxe est donc la suivante :
- {foreach $data3 maClé, mesDonnées}
- {$maClé} - {$mesDonnées.uneDonnée} <br />
- {/foreach}
For :
Tout comme en PHP, for demande 3 paramètres : un indice de départ, un indice de fin et un itérateur. Mais il peut également être utilisé avec juste un nom d’indice et de tableau. La fin et l’itterateur seront paramétrés automatiquement en fonction du contenu du tableau.
Par exemple, avec notre var2 :
on peut écrire
- {for i 0 3}
- {$i} - {$data2.$i}<br />
- {/for}
ou encore
- {for i $data2}
- {$i} - {$data2.$i}<br />
- {/for}
Messages
1. Utiliser les templates dwoo avec codeigniter, 26 août 2012, 18:09, par shadoo
Hello, j’ai intégré Dwoo template sans utiliser la librairie phil layout car je ne vois pas du tout l’utilité d’utiliser cette librairie template + dwoo en collaboration vue que l’on peut complètement se passer de la librairie philsturgeon template ?.....
j’ai approté juste des petites modifications dans le coeur de la class librairie de dwoo template afin qu’il soit compatible CI 2.xxx (je ne sais plus ce que j’avais modifié par contre donc si quelqu’un a une erreur lors de l’intégration qu’il me demande).
Après il suffit tout simplement d’utiliser dans les view ses propres layout que l’on nome comme on veut par convention, le mieux reste encore layout-default, layout-side-content etc...
la librairie dwoo est très pompé sur smarty et plus lourd sur la compilation que smarty 3, tout en sachant que smarty 3 est encore plus puissant que son prédécesseur.
Dwoo template gère l’héritage tout comme twig, smarty 3 et phpti (moteur de template tout en php pour ceux qui préfèreront et très complète aussi).
donc pas besoin de librairie encombrante de template ou layout en plus, il suffit de faire jouer l’héritage de template :
extends ’layout.tpl’
notre code de la vue
pour la gestion des javascript et css suffit d’utiliser les block et l’héritage des block