如何在If语句中使用Twig_Markup对象类型

时间:2017-01-16 21:17:26

标签: twig

我想重复使用非常重的逻辑代码几次,在php中我会使用一个函数,但在twig中我使用this old question的解决方案。

简而言之,我使用像这样的宏:

{% import _self as test %}

{% macro check() %}
    {{ test }}
{% endmacro %}

{% set v = test.check() %}
{% if v == 'test' %} 
    this should display 
{% endif %}

这是一个小提琴:https://twigfiddle.com/kyv3zr/2

问题是v是Twig_markup对象。它似乎没有任何公共属性。在它上运行转储给了我:

object(Twig_Markup)#1244 (2) { ["content":protected]=> string(13) " 1 " ["charset":protected]=> string(5) "UTF-8" }

如何在if语句中使用它?

或者是否有更好的方法来存储仅逻辑代码以便跨模板重用?

1 个答案:

答案 0 :(得分:0)

如果对象被调用v,则转储似乎显示它具有content值,请尝试:

{% if v.content == '1' %}
  {# do something here #}
{% endif %}

虽然不确定,但试试吧。

编辑#2 - 基于评论问题。 所以我想如果你想在if语句中使用v,你会像这样使用它:

{% if v == '1' %}
  {# do something here #}
{% endif %}

这假设它等于“1”。