首页 > 解决方案 > 如何检查动态变量是否存在?

问题描述

我正在开发一个从后端获取多个头像 url(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_ 都存在而不退出循环?

标签: twig

解决方案


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

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

演示


推荐阅读