0

我对如何在 smarty 中使用 post/pre 过滤器感到很困惑。

我需要做的是在页面显示之前搜索和替换页面中的某些元素。我宁愿在调用 $smarty->display 之前执行此操作。这意味着,在它被保存到磁盘之前,但在它被编译之后(所以,后过滤器)。

示例后过滤函数:

function smarty_postfilter_replace($tpl_output, $search, $replace)
{
    return str_replace($search, $replace, $tpl_output);
}

如何在 smarty 输出之前应用它。在查看 Smarty 文档(http://www.smarty.net/docsv2/de/advanced.features.postfilters.tpl)和其他一些示例后,我已经尝试过,但似乎没有一个有效。

有人可以给我一个示例代码,说明如何执行此操作,以及如何将参数传递给过滤器($search,$replace)。

谢谢

4

1 回答 1

1

后置过滤器可能是最容易被误解的过滤器。虽然前置过滤器在未编译的模板源代码上运行,而输出过滤器在评估输出(你知道,生成的 HTML)上运行,但后置过滤器作为编译器的一部分运行 - 它被提供给 PHP 生成由编译器。我不确定有人会用这个做什么。无论如何,这不是你要找的。

使用输出过滤器替换您的内容。如果您使用缓存,如果您没有任何非缓存元素,它会在写入缓存之前运行。如果您有非缓存元素(如 {nocache} 或带有 nocache 标志的变量),则输出过滤器在缓存评估运行(几乎在每个请求上)。

于 2012-07-10T15:50:09.877 回答