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()
方法生成的输出。
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()
方法生成的输出。