如何检查动态变量是否存在?

时间:2019-10-18 13:58:10

标签: twig

我正在处理一个树枝模板,该模板从后端获取几个头像网址(avatar_url_1,avatar_url_2等)。如果我什么都没得到,则需要显示默认的头像图片。

例如 avatar_url_1-我得到一个链接, avatar_url_2-链接, avatar_url_3-为空,不,我应该使用默认网址, avatar_url_4-链接。

我尝试了

{% for i in range(1, 7) %}
{{ elements.avatar("*|avatar_url_" ~ i ~ "|*")}}
...

使用此宏

{% macro avatar(url) %}
    <img src="{% if url | default(false) %}{{url}}{% else %}https://PATH_TO_DEFAULT_IMAGE{% endif %}" />
{% endmacro %}

但是它不起作用。当该变量不存在时,图像路径将损坏,而不使用默认路径。

如何在不退出循环的情况下检查是否存在每个author_avatar_url _?

1 个答案:

答案 0 :(得分:0)

您可能希望将attribute函数与特殊变量_context结合使用,该特殊变量将模板中的所有已知变量都包含在内。

{% for i in range(1, 7) %}
    {{ elements.avatar(attribute(_context, "*|avatar_url_" ~ i ~ "|*") | default(null))}}
{% endfor %}

demo