过滤器可以在模板进入smarty编译模板前设置模板的内容,比如注释,
这些无关紧要的内容 我们不需要它们,因此可以在进入模板之前将其过滤
前置过滤器
registerFilter('pre','');
<?php
require "./mySmarty.cla -->ss.php";
$smarty = new mySmarty();
//定义一个前置过滤器函数
function prevadd($tplName){
$reg ="/<!--.*-->/";
return preg_replace($reg,'',$tplName);
}
$smarty ->registerFilter("pre","prevadd");
后置过滤器
registerFilter('post','');
<?php
//定义一个后置过滤器
function poster($tplname){
return "<---author:smarty zheng--->".$tplname;
}
$smarty ->registerFilter("post","poster");
输出过滤器
registerFilter('output','');
<?php
//定义输出过滤器
function outmessage($tplname){
echo "13232<br/>";
return str_replace("过滤器工具","tool",$tplname);
}
$smarty ->caching = 1;
$smarty ->registerFilter("output","outmessage");
$smarty ->assign('name','prvfileter');
$smarty->clearCompiledTemplate('filter.html');//清除编译目录下的编译文件或者指定条件的编译文件。
$smarty ->display("filter.html");
对于输出过滤器来说,输出过滤器在整个smarty的执行流程过程中.是在编译文件生成之后,所以输出过滤器的内容不会出现在view_c编译好的目录文件中,但是如果caching=1 那么输出过滤器的内容会保存到cache目录缓存目录中去
利用smarty的过滤功能可以为模板做统一的设置,可以将方法定义在父类控制器中。例如将所有的模板中的注释去除掉.