【问题标题】:Fluid variables do not read the child values anymore. (TYPO3 9.5.*)流体变量不再读取子值。 (TYPO3 9.5.*)
【发布时间】:2019-03-27 12:33:57
【问题描述】:

所以我有一张列出一些约会的表格。这些约会属于一个事件。这里的目标是列出所有约会并获取它们所属的事件的信息。

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

现在,如果我使用这样的东西:{appointment.event.title} 它会回馈NULL

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

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

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

使用中:TYPO3 v9

模式:作曲家

最好的问候,

【问题讨论】:

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


    【解决方案1】:

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

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

    谢谢!

    【讨论】:

    • 这似乎是 TYPO3 版本 9 的错误
    【解决方案2】:

    可能以下情况之一为真:

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

    你没有说你使用的是哪个 TYPO3 版本,也没有说你是否使用了 composer,所以很难判断你的 Fluid 版本是否相同——它们应该是相同的,因为 TYPO3 v8 和 TYPO3 v9 使用相同的外部流体库。

    无论哪种情况,解决方案都是为您的域模型对象添加适当的 getter 方法,并始终记住 f:debug 的输出与您实际可以访问的内容不是 100% 对应:例如,f:debug 将不显示虚拟没有与之关联的属性的 getter 方法。

    【讨论】:

    • 我有一个调用事件并正确获取所有信息的操作。如果我调用同一个对象但通过约会存储库(约会操作)我没有得到它们。我的吸气剂在那里。但我无法访问它们
    • 如果您也无法在控制器操作(PHP 代码)中访问这些属性,这显然是模型的问题。如果从存储库加载对象与将其映射为控制器参数时不同,则清楚地表明存储库存在问题(可能是不正确的覆盖方法,错误的查询准备等)。但也许你可以多解释一下上下文。模型的源代码是什么?您使用的是哪个版本的 v8 和 v9?你还改变了什么(因为你可能也更新了扩展?)。您是否检查过 GitHub 问题...?
    猜你喜欢
    • 1970-01-01
    • 2017-07-14
    • 2021-09-01
    • 1970-01-01
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多