3

我在 Twig 中创建了一个过滤器,它在输出周围包装了一些 HTML。例如

{{ 'this is a "test"'|display }}

输出

<div id="container">
  <div id="content">
    this is a "test"
  </div>
  <div id="toolbar">
    <a href="/edit.php">edit</a>
  </div>
</div>

困境是,我希望后续过滤器仅应用于原始内容,而不是整个 html。例如

{{ 'this is a "test"'|display|upper|e }}

输出

&LT;DIV ID=&QUOT;CONTAINER&QUOT;&GT;
  &LT;DIV ID=&QUOT;CONTENT&QUOT;&GT;
    THIS IS A &QUOT;TEST&QUOT;
  &LT;/DIV&GT;
  &LT;DIV ID=&QUOT;TOOLBAR&QUOT;&GT;
    &LT;A HREF=&QUOT;/EDIT.PHP&QUOT;&GT;EDIT&LT;/A&GT;
  &LT;/DIV&GT;
&LT;/DIV&GT;

但你可以想象,我更喜欢这样的输出

<div id="container">
  <div id="content">
    THIS IS A &QUOT;TEST&QUOT;
  </div>
  <div id="toolbar">
    <a href="/edit.php">edit</a>
  </div>
</div>

将过滤器顺序更改为

{{ 'this is a "test"'|upper|e|display }}

将适用于上层过滤器,但不适用于逃生过滤器,因为它始终将自身置于过滤器队列的末尾。它也应该与 autoescape=true 一起使用。

阅读树枝文档,我找不到做我想做的事的标准方法。有人可能尝试过类似的东西吗?或者有人想解决这个问题?

提前致谢!

4

1 回答 1

0

尝试:

{{ 'this is a "test"'|upper|e|display }}

首先过滤您的内容,然后将其包装。

于 2012-09-25T10:57:36.413 回答