0

我是 Twig 和 Symfony2(以及 PHP)的新手。我目前有一个对象数组,我可以通过在 {for result in results} 语句之后执行 {{result.attribute1}} 来访问属性。

我想使用一个变量 {{var| removePath}} (其中 removePath 是我在 Twig 中制作的扩展),并使用它来迭代结果数组。我想做的是返回 row if {{var| removePath}} == result.attribute1

这可以在树枝上做吗?如果是这样,我应该如何解决这个问题?我已经尝试过类似于下面的代码,但是执行了“else”语句(说不匹配)。我也试过var == result.attribute了,但这也没有用。

{% for result in results %} 
{% if var|removePath in result.attribute1 %}
   {{ var | removePath }} exists.
{% else %}
   {{ var | removePath }} doesn't exist in array.
{% endif %}{% endfor %}

因此,我认为我有两个问题;

1)在 TWIG 中是否可以(如果可以,如何)

2)是否有更简单/更好的方法来获取整行(对象数组还包含属性 2、3 和 4,我想返回与属性 1 相同的那些(如果它与 var 匹配))

查看我 最近添加的阵列的架构

预先感谢您的帮助!我希望我的问题可以理解:S

4

1 回答 1

0

只需用括号将表达式括起来。

使用(var|removePath)which 对表达式进行分组。

例子:

{% if ( 1+1 ) == 2 %}

您可以使用该attribute()函数访问对象/数组的属性和方法。

{{ attribute(object, method) }}
{{ attribute(object, method, arguments) }}
{{ attribute(array, item) }}

树枝文档中的属性章节

使用三元运算符进一步缩短模板代码,如下所示:

{% set strippedVar = var|removePath %}
{{ strippedVar }}{{ (strippedVar in result.attribute1) ? 'exists' : 'does not exist' }}.

将过滤后的变量设置为另一个可防止多次执行过滤器。

于 2013-07-11T13:55:41.810 回答