除了最后一个之外,在列表的每个元素之后添加逗号的最短(和最清晰)的方法是什么?
{% for role in user.roles %}
{{ role.name }},
{% endfor %}
此示例将在所有行之后添加逗号,包括最后一行。
不知道最短,但这可能很清楚。尝试以下操作在循环中除最后一行之外的所有行之后添加逗号:
{% for role in user.roles %}
{{ role.name }}
{% if not loop.last %},{% endif %}
{% endfor %}
评论中建议的较短版本:
{% for role in user.roles %}
{{ role.name }}
{{ not loop.last ? ',' }}
{% endfor %}
这适用于 Symfony 2.3.x,但应该适用于每个 2.x 版本:
{{ user.roles|join(', ') }}
{{- 不是 loop.last ?',' : '' -}}
{{ user.roles|column('title')|join(', ') }}
由于 OP 要求对name
a 的键进行迭代role
。
最短的是:
{{ user.roles|column('name')|join(', ') }}
其中user.roles
是用户角色列表。
以下是我如何在循环中使用 twig 的局部变量以某种科学出版物格式打印作者姓名(以数组形式authors
)-loop
for
{% spaceless %}
{% for author in authors %}
{{- loop.last ? ' and ' : (not loop.first ? ', ') -}}
{{- author -}}
{% endfor %}
{% endspaceless %}
输出类似于
为 1 位作者
作者1
2位作者
作者 1 和作者 2
对于 3 位或更多作者
作者 1、作者 2 和作者 3