Manuel Smarty

filtres de pré-compilation/filtres de post-compilation

Les filtres de pré-compilation et les filtres de post-compilation ont des concepts très proches. Ils différent dans leur exécution, plus précisément dans le moment où ils sont exécutés.

string smarty_prefilter_name (string $source, object &$smarty)

Les filtres de pré-compilation sont utilisés pour transformer la source d'un template juste avant la compilation. Le premier paramètre passé à la fonction de filtre de pré-compilation est la source du template, éventuellement modifiée par d'autres filtres de pré-compilations. Le plugin est supposé retourner la source modifiée. Notez que cette source n'est sauvegardée nulle part, elle est seulement utilisé pour la compilation.

string smarty_postfilter_name (string $compiled, object &$smarty)

Les filtres de post-compilation sont utilisés pour modifier la sortie du template (le code PHP) juste après que la compilation a été faîte mais juste avant que le template ne soit sauvegardé sur le système de fichiers. Le premier paramètre passé à la fonction de filtre de post-compilation est le code du template compilé, éventuellement déja modifié par d'autres filtres de post-compilations. Le plugin est censé retourner la version modifiée du code.

Exemple 16-7. Plugin de filtre de post-compilation

  1. <?php
  2. /*
  3. * Smarty plugin
  4. * -------------------------------------------------------------
  5. * Fichier : prefilter.pre01.php
  6. * Type :    filtre de pré-compilation
  7. * Nom :    pre01
  8. * Rôle :    Passe les balises HTML en minuscules.
  9. * -------------------------------------------------------------
  10. */  
  11. function smarty_prefilter_pre01($source, &$smarty)  
  12. { 
  13.    return preg_replace('!<(\w+)[^>]+>!e', 'strtolower("$1")', $source);  
  14. }  
  15. ?> 

Exemple 16-8. Plugin de filtre de post-compilation

  1. /*
  2. * Smarty plugin
  3. * -------------------------------------------------------------
  4. * Fichier : postfilter.post01.php
  5. * Type:    filtre de post-compilation
  6. * Nom :    post01
  7. * Rôle :    Renvoie du code qui liste toutes les variables
  8. *         du template.
  9. * -------------------------------------------------------------
  10. */
  11. function smarty_postfilter_post01($compiled, &$smarty)
  12. {
  13.     $compiled = "<pre>\n<?php print_r($this->get_template_vars()); ?>\n</pre>" . $compiled;
  14.     return $compiled;
  15. }
  16. ?> 

Voir aussi register_prefilter(), unregister_prefilter() register_postfilter() et unregister_postfilter().


Remonter Remonter
L'éditeur javascript - CSS - Gentoo - Tutoriaux PHP - Tutoriels PHP - Bretagne - php - Moto - Kit graphique