如何在fluid中访问FileReference对象的属性

15

下面是fluid中FileReference类型对象的调试信息。在fluid中,调试信息如下所示:<f:debug>{fileReference}</f:debug>

问题是如何访问突出显示为widthheighthovertext的属性。

原始文件是一个图像,因此widthheight是默认的T3属性,hovertext由我的扩展程序添加,并带有自己的getter/setter。

我尝试了以下方法:

{fileReference.width}
{fileReference.mergedProperties.width}
{fileReference.originalResource.width}

到目前为止还没有运气,如何正确访问mergedProperties中的值?

非常感谢

Florian

TYPO3 fluid Debug


你确定你的文件类继承自默认类吗? - pgampe
我很确定可以,但即使如此,这会对图像的标准宽度和高度属性产生任何影响吗?这些属性是由核心团队自己添加的,它们应该在任何情况下都能正常工作,除非我理解错了什么? - Florian Rachor
1个回答

37

f:debug 显示的类似于 var_dump 函数的东西,即对象的属性。在 fluid 中,你只能访问 getter 函数,或者如果它是一个数组,则访问数组的值。因此,如果你写了像这样的代码 {fileReference.mergedProperties},则会调用方法 getMergedProperties()(如果存在的话)。

了解这一点后,你可以查看 sysext/core/Classes/Resource/FileReference.php 文件,并查看它有哪些 getter 方法。我们可以快速找到返回你标记的合并属性的 public function getProperties(),因此正确的解决方案应该是这个:

{fileReference.properties.width}

是的,它有效。非常感谢,那真是太有帮助了。你不仅提供了解决我的问题的方法,而且我现在知道了它是如何工作的,下次可以自己查找。 - Florian Rachor
5
任何看到这条回答和问题的人都应该点赞。它完整地解释了DebuggerUtility和Fluid(内部使用Extbase)变量访问的详细信息。如果你想知道Fluid如何访问任何变量的每一个细节,可以在https://vimeo.com/169551666找到相关资料。但是请点赞这个回答和问题! - Claus Due
2
再次强调,这是必要的信息,应该在文档中进行解释。 - j4k3
1
谢谢。给那些不太明白的人(包括我)一个提示:你可以对其他类使用完全相同的方法。如果你想获取文件的标题或宽度而不是文件引用,只需使用 {file.properties.width}即可。 - janisch

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