autoescape 内的无空间块在 Twig 3 中抛出 SyntaxException。*

spaceless block inside autoescape throws SyntaxException in Twig 3.*

刚从 Twig 2.* 更新到 Twig 3.*

我的大部分模板都包含在 {% autoescape %} ... {% endautoescape %} 块中

有些模板内部有 {% spaceless %} ... {% endspaceless %} 块。

最后看起来像这样:

{% autoescape %}
  ...
  {% spaceless %}
    ...
  {% endspaceless %}
  ...
{% endautoescape %}

现在(更新到 3.* 后)我从 Twig 得到 SyntaxException

这些块应该如何rewritten/supported?

为什么 Twig 不再支持这种构造?

Fatal error: Uncaught Twig\Error\SyntaxError: Unexpected "spaceless" tag (expecting closing tag for the "autoescape" tag defined near line 2). in

您现在需要使用 apply 标签,例如

{% apply spaceless %}
 ...
{% endapply %}

reference


这种结构的原因是为了拥有一致的代码库,因为您现在可以 "apply" 过滤文本块,例如

{% apply upper %}
    This {{ text }} becomes uppercase
{% endapply %}

而你过去需要连接它并添加括号

{{ ('This '~text~' becomes uppercase')|upper }}


TLDR 为了保持一致,他们决定删除 tag spaceless 并引入 filter无空间