Twig:替换字符串的每个实例

Twig: Replace every instance of a string

Twig有没有办法在整个系统中用另一个字符串B替换定义的字符串A?这意味着每当我输出任何东西(变量、静态内容、翻译等)时,都有一个过程会检查 A 的内容并将其替换为 B。

有没有我可以挂接的某种侦听器或事件来执行此操作?

我知道 Twig 中有 replace 个过滤器,但我不想在每个实例中都定义它们,但请确保它会在所有地方被替换。

第一个解决方案是为 Twig 定义自定义 "node visitor"。 Twig_NodeVisitor_Optimizer 是一个示例,说明如何在不添加任何特殊功能、过滤器或标签的情况下更改模板的内容。

但是,定义 "node visitor" 非常复杂,我建议您改用其他方式解决此问题:

  • 如果您在 Symfony 中使用 Twig,请使用 kernel.response event 获取响应并在将内容传递给用户之前对其内容应用简单的 str_replace()preg_replace() 函数。
  • 如果您单独使用 Twig,请将相同的技术应用于 render() 方法生成的输出。