如何在If语句中使用Twig_标记对象类型

如何在If语句中使用Twig_标记对象类型,twig,Twig,我只想重复使用相当重的逻辑代码几次,在php中我会使用一个函数,但在twig中我使用了来自的解决方案 简而言之,我使用这样的宏: {% import _self as test %} {% macro check() %} {{ test }} {% endmacro %} {% set v = test.check() %} {% if v == 'test' %} this should display {% endif %} 这是一把小提琴: 问题是v是一个Twi

我只想重复使用相当重的逻辑代码几次,在php中我会使用一个函数,但在twig中我使用了来自的解决方案

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

{% import _self as test %}

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

{% set v = test.check() %}
{% if v == 'test' %} 
    this should display 
{% endif %}
这是一把小提琴:

问题是v是一个Twig_标记对象。它似乎没有任何公共属性。在它上运行dump可以提供以下信息:

object(Twig_Markup)#1244 (2) { ["content":protected]=> string(13) " 1 " ["charset":protected]=> string(5) "UTF-8" }
如何在if语句中使用它


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

如果对象被称为
v
,则转储似乎显示它具有
内容
值,因此请尝试:

{% if v.content == '1' %}
  {# do something here #}
{% endif %}
虽然不确定,但是试试看

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

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

这假定它等于“1”。

如果对象被称为
v
,则转储文件似乎显示它有
内容
值,因此请尝试:

{% if v.content == '1' %}
  {# do something here #}
{% endif %}
虽然不确定,但是试试看

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

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

这假定它等于“1”。

是的,但它是受保护的,我得到的只是:属性“content”或方法“content()”、“getcontent()”/“iscontent()”或“u call()”都不存在,并且在类“Twig_Markup”中具有公共访问权限。你能发布你的条令实体代码吗?或者你没有使用教义?或者你用来创建文章中显示的对象
v
的任何代码。我已经在我的问题中添加了一些上下文可能文件
macros/\u visibility.html
包含更多信息?根据你刚刚发布的内容,这对我没有帮助。@Lukigi你是如何将变量传递给模板的?变量不会自动转换为
Twig\u标记。复制并运行fiddle,您将看到输出类型,如
int
string
array
是的,但它是受保护的,我得到的只是:属性“content”或方法“content()”、“getcontent()”/“iscontent()”或“\uu call()”都不存在,并且在类“Twig\u Markup”中具有公共访问权限你能发布你的条令实体代码吗?或者你没有使用教义?或者你用来创建文章中显示的对象
v
的任何代码。我已经在我的问题中添加了一些上下文可能文件
macros/\u visibility.html
包含更多信息?根据你刚刚发布的内容,这对我没有帮助。@Lukigi你是如何将变量传递给模板的?变量不会自动转换为
Twig\u标记。复制并运行小提琴,您将看到输出类型,如
int
string
array
我有一组重要的问题,请在回答之前先考虑一下:您到底想做什么?你想要达到的最终结果是什么?我现在明白了宏的作用,但是你可以让它做你需要的任何事情——我不知道你需要的最终结果是什么。例如,您可以显示想要生成的结果html代码,或者显示一张示例图片。你的投入是什么,产出是什么。我有一系列重要的问题,在回答之前先想一想:你到底想做什么?你想要达到的最终结果是什么?我现在明白了宏的作用,但是你可以让它做你需要的任何事情——我不知道你需要的最终结果是什么。例如,您可以显示想要生成的结果html代码,或者显示一张示例图片。您的输入和输出是什么。