smarty template engine
Thursday, November 20, 2008  
download | documentation | faq | forum | mailing lists | changelog | contribs 


search for in the  


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

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

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

/*
 * Smarty plugin
 * -------------------------------------------------------------
 * Fichier :  postfilter.post01.php
 * Type:      filtre de post-compilation
 * Nom :      post01
 * Rôle :     Renvoie du code qui liste toutes les variables
 *            du template.
 * -------------------------------------------------------------
 */
 function smarty_postfilter_post01($compiled, &$smarty)
 {
     $compiled = "<pre>\n<?php print_r($this->get_template_vars()); ?>\n</pre>" . $compiled;
     return $compiled;
 }
?>

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




 

credits 

Smarty Copyright © 2002-2008
New Digital Group, Inc.

All rights reserved.