在Typo3 Fluid模板中访问动态对象属性

3

我在Typo3 Fluid模板中有一个对象,并且想要访问它的属性,但该属性的名称存储在变量someProperty中:

<f:if condition="searchObject.{someProperty}">
        Found!
</f:if>

由于这种方法无法工作:是否有内置的方法可以通过变量访问属性?
3个回答

6
您可以尝试使用Fluid viewhelper集合中的v:var.get视图助手,链接在此:https://fluidtypo3.org/viewhelpers/vhs/master/Variable/GetViewHelper.html。如果您找不到合适的视图助手,可以根据这里的一些示例编写自己的视图助手来实现此功能。
更新:由于这是一个关于TYPO3 6.2的旧问题,现在是将其更新到当前标准的时候了(请参见Claus Due的答案)。
对于当前的LTS版本:TYPO3 9.5,您可以使用简单的方法:
{searchObject.{someProperty}}

那么这方面没有内置的功能吗? - Martin
我认为这里没有什么问题。Fluid在其核心中具有基本功能,但也有许多扩展功能,就像上面的那个一样。 - András Ottó
我在某处读到,嵌套变量访问是TYPO3 v9的一个功能。在v9以下的Fluid中应该不可能或至少只有低级别支持。您将需要使用“EXT:vhs”。 - cephei_vv

2
在Fluid独立版本、TYPO3v8及以上版本中: {array.{variableContainingKey}}

0

点符号实际上是访问属性的正确方式。你所说的动态是什么意思?可以为空吗?你尝试过以下方法吗?

<f:if condition="<f:count>{searchObject.someProperty}</f:count>">
    Found!
</f:if>

或者只是:

<f:if condition="{searchObject.someProperty}">
    Found!
</f:if>

1
我认为这个问题是关于动态属性读取的。假设代码需要检查对象是否具有XYZ属性。所以在这种情况下,{someProperty}是一个变量,可能具有不同的值:XYZ、ZYX、YYY等等。这并不是那么简单。 - András Ottó
哦,好的!你不能在控制器中使用属性名称解析变量吗? - Wipster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接