【问题标题】:Twig extension: custom tag with un-rendered bodyTwig 扩展:带有未渲染主体的自定义标签
【发布时间】:2018-01-15 15:18:43
【问题描述】:

是否可以使用未渲染的主体创建自定义标签?例如

{% mytag 'home' %}Welcome at {{ homepage }}{% endmytag %}

我想在新的 mytag 函数中获得 {{ homepage }} 变量的值。

【问题讨论】:

  • “未渲染”是什么意思?运行该节点后模板中没有实际输出?
  • 变量{{ homepage }}在主渲染文件中没有设置,所以标签的主体是'Welcome at',应该是'Welcome at {{ homepage }}'
  • 所以你想输出文本“欢迎来到 {{ homepage }}”? {% verbatim %}Welcome at {{ homepage }}{% endverbatim %}Welcome at {{ '{{' }} homepage {{ '}}' }} 怎么样?
  • 你的意思是this
  • 逐字确实是一个解决方案,但我更喜欢没有verbatim的情况,这可能吗? @DarkBee,我不想使用“块”元素。

标签: twig twig-extension


【解决方案1】:

就像Twig's documentation 所说,有两种标准方法(即无需创建 Twig 扩展)来转义代码,即防止 Twig 解析 {{ variables }}{% blocks %}

  1. {% verbatim %}Welcome at {{ homepage }}{% endverbatim %}

  2. Welcome at {{ '{{ homepage }}' }}Welcome at {{ '{{' }} homepage {{ '}}' }}

如果这些选项不适合您,请更具体地说明您想要实现的目标。

【讨论】:

  • 这确实是正确的,但情况是它是一个 Twig 扩展,因为我想要一个自定义标签。因此,在这种情况下,跳过代码中的verbatim 会更容易。
  • 您的意思是要创建一个行为与verbatim 完全相同的自定义标签吗?在您的问题中,您有{% mytag 'home' %}'home' 的目的是什么?
  • mytag中有多个参数,home只是一个例子
  • 现在我很困惑,因为在您的问题中您没有指定参数的用途。请更新您的问题,详细说明您正在尝试做什么以及为什么 verbatim 在您的情况下不是一个可行的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-09
  • 2011-04-19
  • 1970-01-01
  • 2022-11-10
相关资源
最近更新 更多