如何在If语句中使用Twig_标记对象类型
我只想重复使用相当重的逻辑代码几次,在php中我会使用一个函数,但在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
{% 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代码,或者显示一张示例图片。您的输入和输出是什么。