twig动态变量调用

m6d*_*vin 4 php template-engine symfony twig

我将3种语言的数据传递给twig模板,并以这种方式显示这些数据:

{% set lang=app.request.get("lang")%}
{% for item in contests%}
    {% if lang=="fa"%}
        {{item.titlefa}}
    {% elseif lang=="en"%}
        {{item.titleen}}
    {% elseif lang=="ar"%}
        {{item.titlear}}
    {% endif%}
{% endfor%}
Run Code Online (Sandbox Code Playgroud)

它是wirking但我必须为"竞赛"中的每个对象创建3条件如何在此逻辑中显示数据:

{% set lang=app.request.get("lang")%}
 {{item.title~lang}}
{% endfor%}
Run Code Online (Sandbox Code Playgroud)

在比赛中可以称之为正确的方法

Mat*_*teo 8

您可以使用属性 TWIG函数在运行时调用方法名称,例如:

    {% set lang=app.request.get("lang")%}
    {% methodname = 'title'~lang %}
      {% for item in contests%}
        {{ attribute(item, methodname) }}
      {% endfor%}
Run Code Online (Sandbox Code Playgroud)

希望这有帮助