【问题标题】:Symfony3: Apply function to the output of every Twig renderSymfony3:将函数应用于每个 Twig 渲染的输出
【发布时间】:2017-05-29 22:32:03
【问题描述】:

在我的 Twig 模板中,我经常在顶部放置作业,例如: {{ set something = value() }}

因此,在我打开 <html> 标记之前通常会有几行空行。为了解决这个问题,我想在每个 Twig 渲染的输出上运行 trim(),无论是 $this->renderView()$this->render()

我可以“手动”执行此操作,但我想知道是否有办法让 Symfony 自动执行此操作,可能是扩展 Twig 或添加事件侦听器。有可能这样做吗?我正在使用 Symfony 3.2。

谢谢。

【问题讨论】:

  • 您的问题不是很清楚,除非您更新问题,否则很多人会否决它。你想达到什么目的?显然你想删除空格,但为什么呢?你想解决什么问题?你有一些示例代码吗?
  • 我认为这是一个非常简单的问题......我现在已经更新了更多信息。

标签: symfony symfony-3.2


【解决方案1】:

除了在每个标签中使用空格(如 {{- xyz}} 或 {{- xyz -}} 一样在标签前添加或添加“-”) 修剪适用于

的两侧
  • {{ … }}
  • {% … %}
  • {# … #}

并通过 {% spaceless %}...{% spaceless %} 完全删除空白我怀疑是否有任何简单的方法可以按照您的意愿删除空白。

进一步阅读:https://twig.sensiolabs.org/doc/2.x/templates.html#whitespace-control

【讨论】:

    【解决方案2】:

    你可以用spaceless标签包裹你的基本树枝模板,以避免在html标签之前有间隔。

    【讨论】:

    • spaceless 标签不仅会修剪 html 标签之前的空格,还会修剪所有空格,因此您的输出看起来像 '
      asdf
      '
      没有任何换行符。但是,可以尝试将它放在第一个实际 HTML 标记之前完成的分配周围。
    【解决方案3】:

    我想知道这是否可行。在您的基本模板 `base.html.twig' 中将其添加到顶部(标记之前):

    {%- block variables -%}{%- endblock -%}
    

    然后在你的扩展文件中调用:

    {% extends 'base.html.twig' %}
    {%- block variables -%}
       {{ set something = value() }}
    {%- endblock -%}
    

    或者类似的东西。可能有用吗?

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 2021-07-12
      • 1970-01-01
      • 2016-03-05
      • 1970-01-01
      • 2014-02-21
      • 1970-01-01
      • 2014-01-24
      • 2016-11-16
      相关资源
      最近更新 更多