我想重复使用非常重的逻辑代码几次,在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语句中使用它?
或者是否有更好的方法来存储仅逻辑代码以便跨模板重用?
答案 0 :(得分:0)
如果对象被调用v
,则转储似乎显示它具有content
值,请尝试:
{% if v.content == '1' %}
{# do something here #}
{% endif %}
虽然不确定,但试试吧。
编辑#2 - 基于评论问题。
所以我想如果你想在if语句中使用v
,你会像这样使用它:
{% if v == '1' %}
{# do something here #}
{% endif %}
这假设它等于“1”。