如何在Twig中使用块时保持缩进

时间:2016-12-20 16:14:15

标签: symfony twig indentation

我尝试在Symfony项目中制作漂亮的RSS Feed。对于每个项目,我包含一个文件。没关系,但是当我查看输出时,Twig 重置块元素中的缩进。这是一个例子:

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>
  <channel>
    <title>Space Raclette</title>
    <description></description>
    <language>fr</language>
    <lastBuildDate>Wed, 30 Nov 2016 11:22:45 +0100</lastBuildDate>

<item>
  <title>Topic de l&#039;ƩtƩ du Capitaine Crochet 2</title>
  <link>...</link>
  <guid isPermaLink="false">.../39fa</guid>
  <description></description>
</item>


<item>
  <title>Topic de l&#039;ƩtƩ du Capitaine Crochet</title>
  <link>...</link>
  <guid isPermaLink="false">.../39fa</guid>
  <description></description>
</item>

  </channel>
</rss>

如何在“项目文件”中保留缩进而不会出现错误缩进?我尝试使用spaceless-,但没有成功。

这里是我的文件,如果它可以帮助。

layout.rss.twig:

<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
>

  <channel>
    <title>{{ channel.brand }}</title>
    <atom:link href="{{ app.request.uri }}" rel="self" type="application/rss+xml" />
    <link>{{ url }}</link>
    <description>{{ channel.description|striptags }}</description>
    <language>{{ channel.lang }}</language>
    <lastBuildDate>{{ last_publication.published|date('D, d M Y H:i:s O') }}</lastBuildDate>

    {% block content %}{% endblock %}

  </channel>
</rss>

index.rss.twig

{% extends 'RSSBundle::layout.rss.twig' %}
{% block content %}
  {% for publication in web_publications %}
    {{ include('RSSBundle:Publication:_single.rss.twig') }}
  {% endfor %}
{% endblock %}

_single.rss.twig

<item>
  <title>{{ publication.title }}</title>
  <link>{{ url }}</link>
  <description></description>
  <pubDate>{{ publication.published|date('D, d M Y H:i:s O') }}</pubDate>
</item>

1 个答案:

答案 0 :(得分:0)

在某些情况下,

Twig can remove whitespace字符,但它从不添加它们。因此,最明显和最简单的解决方案就是缩进包含的模板。

  

模板引擎不会进一步修改空格,因此每个空格(空格,制表符,换行符等)都会保持不变。

您可以对结果XML进行后处理。例如,您可以将其加载到DOMDocument并使用formatOutput选项转储。或者通过tidy。无论如何,它需要一些额外的工作。

但是(恕我直言),Twig不是一个适合XML处理的工具。更好地使用任何标准API来构建XML,例如DOMDocument(使用formatOutput)或XMLWriter(使用setIndent())。