我尝试在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'ƩtƩ du Capitaine Crochet 2</title>
<link>...</link>
<guid isPermaLink="false">.../39fa</guid>
<description></description>
</item>
<item>
<title>Topic de l'Ʃ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>
答案 0 :(得分:0)
Twig can remove whitespace字符,但它从不添加它们。因此,最明显和最简单的解决方案就是缩进包含的模板。
模板引擎不会进一步修改空格,因此每个空格(空格,制表符,换行符等)都会保持不变。
您可以对结果XML进行后处理。例如,您可以将其加载到DOMDocument
并使用formatOutput
选项转储。或者通过tidy
。无论如何,它需要一些额外的工作。
但是(恕我直言),Twig不是一个适合XML处理的工具。更好地使用任何标准API来构建XML,例如DOMDocument
(使用formatOutput
)或XMLWriter
(使用setIndent()
)。