Php Twig在for循环中添加空格
我正在向现有项目添加一个函数,所以我必须使用twig。我正在显示一个单词的翻译,所以我有一个对象列表。对象具有多个属性Php Twig在for循环中添加空格,php,html,twig,Php,Html,Twig,我正在向现有项目添加一个函数,所以我必须使用twig。我正在显示一个单词的翻译,所以我有一个对象列表。对象具有多个属性 {% for trans in Translations.dictionaryList[0].wordTranslationsList|sortLangAndFreqClass %} {% if currentLanguage is not same as (trans.targetLanguage) %} {% set current
{% for trans in Translations.dictionaryList[0].wordTranslationsList|sortLangAndFreqClass %}
{% if currentLanguage is not same as (trans.targetLanguage) %}
{% set currentLanguage = trans.targetLanguage %}
{% set first = TRUE %}<b> {{- Languages[(currentLanguage |upper)] -}}: </b>
{% endif %}
{% if not first %}, {% endif %}
<a href="{{'res'|url({'view_language' : view_language, 'corpusId': trans.corpus, 'word' : trans.translation})}}">{{- trans.translation -}}</a> ({{- trans.freqClass -}})
{% set first = FALSE %}
{% endfor %}
{%用于翻译中的转换。字典列表[0]。wordTranslationsList | sortLangAndFreqClass%}
{%如果currentLanguage与(trans.targetLanguage)%%不同}
{%set-currentLanguage=trans.targetLanguage%}
{%set first=TRUE%}{{-Languages[(currentLanguage | upper)]-}}:
{%endif%}
{%if不是第一个%},{%endif%}
({-trans.freqClass-}})
{%set first=FALSE%}
{%endfor%}
输出内容如下:丹麦语:hus(10)英语:home(6)、business(7)、family(7)、live(8)、house(8)
但是我想删除逗号前的空格,所以应该是:
丹麦语:hus(10)英语:家(6)、生意(7)、家庭(7)、生活(8)、房子(8)
我找到了将所有内容都写在一行中的解决方案,但这非常难看,而且不可能阅读。有没有其他方法可以解决这个问题?我相信这不是一个小问题,而是html的工作方式。在常规html中,如果在任何字符之前有一个换行符,它将转换为常规空格
<p>something
,
another thing</p>
现在,查看twig文档[1],我发现在任何循环中都有一个隐式变量loop
(就像您正在使用的for)。此变量的两个属性是loop.first
和loop.last
,它们告诉您当前元素是第一个还是最后一个元素
您可以使用最后一个元素,而不是使用第一种方法
{% for trans in Translations.dictionaryList[0].wordTranslationsList|sortLangAndFreqClass %}
{% if currentLanguage is not same as (trans.targetLanguage) %}
{% set currentLanguage = trans.targetLanguage %}
<b> {{- Languages[(currentLanguage |upper)] -}}: </b>
{% endif %}
<a href="{{'res'|url({'view_language' : view_language, 'corpusId': trans.corpus, 'word' : trans.translation})}}">{{- trans.translation -}}</a> ({{- trans.freqClass -}}){% if not loop.last %}, {% endif %}
{% endfor %}
{%用于翻译中的转换。字典列表[0]。wordTranslationsList | sortLangAndFreqClass%}
{%如果currentLanguage与(trans.targetLanguage)%%不同}
{%set-currentLanguage=trans.targetLanguage%}
{{-语言[(当前语言|上限)]-}:
{%endif%}
({-trans.freqClass-}}){%if-not-loop.last%},{%endif%}
{%endfor%}
请注意,我是如何在
中添加{%if not loop.last%},{%endif%}
的,您可以这样一行:
{% set items = [ 'foo', 'bar', 'foobar', 'barfoo', ] %}
{% for item in items %}
{{- ((not loop.first ? ', ')~'<a href="http://www.example.com#'~item~'">'~item~'</a>') | raw -}}
{% endfor %}
{%set items=['foo','bar','foobar','barfoo',]%}
{items%%中的项的%s}
{{-((不是loop.first?,')~'')| raw-}
{%endfor%}
非常感谢!这是我的第一个方法,但在我的项目中,我被告知删除每个语言名称前的逗号,因此从以下内容中删除:丹麦语:hus(10)、英语:home(6)、business(7)、family(7)、live(8)、house(8)到以下内容:丹麦语:hus(10)英语:home(6)、business(7)、family(7)、live(8)、house(8)。使用loop.last,我可以删除for循环的最后一个逗号
{% set items = [ 'foo', 'bar', 'foobar', 'barfoo', ] %}
{% for item in items %}
{{- ((not loop.first ? ', ')~'<a href="http://www.example.com#'~item~'">'~item~'</a>') | raw -}}
{% endfor %}