流体变量不再读取子值。 (TYPO3 9.5。*)

时间:2019-03-27 12:33:58

标签: object typo3 fluid typo3-8.x typo3-9.x

所以我有一张桌子,上面列出了一些约会。这些约会属于一个事件。这里的目标是列出所有约会并获取它们所属事件的信息。

到目前为止,一切正常,直到我尝试获取事件的信息。我得到一个看起来像这样的对象:

enter image description here

现在,如果我使用这样的内容:{appointment.event.title},它将返回NULL

这意味着它不访问属性。 在TYPO3 v8中,它可以完美运行,但在TYPO3 v9中,效果不佳。

如果我激活<f:debug>{appointment}</f:debug>并获得调试的整个对象,那么此{appointment.event.title}就可以了!我可以得到标题。

现在的问题是,自TYPO3 8以来发生了什么变化,无法再访问这些属性,我该如何重新获得访问权限?

使用中:TYPO3 v9

模式:作曲家

最诚挚的问候,

2 个答案:

答案 0 :(得分:1)

可能是以下情况之一:

  1. 您忘记为尝试访问的属性添加getter方法,并且将f:debug的输出与对象的实际上的获取表混淆了。调试ViewHelper输出还可以保护属性。
  2. 您使用__call__get构造了模型对象,因此您受到https://github.com/TYPO3/Fluid/pull/438的影响,该问题已解决但尚未发布(当前Fluid版本为2.6.0,将包括补丁)在下一版本中。

您不会说您使用的是哪个TYPO3版本,也不会使用作​​曲家,因此很难判断您的Fluid版本是否相同-应该是相同的,因为TYPO3 v8和TYPO3 v9都使用相同的外部版本。流体库。

这两种情况下的解决方案都是向您的域模型对象中添加适当的getter方法,并始终记住f:debug的输出并不100%对应于您实际可以访问的内容:f:debug将示例未显示不具有与其关联的属性的虚拟getter方法。

答案 1 :(得分:1)

我找到了解决问题的方法。

感谢@Claus Due,我访问了我的模型,以查看getter和setter是否在那里。在我使用getter之前,它们在那里,但@lazy参数已经存在。我删除后,一切正常。

谢谢!