Typo3 更新:除非使用 f:debug,否则 Partial 不会呈现可变内容
Typo3 Update: Partial does not render variable content unless f:debug is used
我正在处理从 8.7.27 到 9.5.9 的 typo3 更新,并且我们自己编写的一个扩展中的一个部分有问题。如果我使用 <f:debug>{_all}</f:debug>
,它只会呈现内容。否则字段保持为空。
到目前为止,我已经尝试按照更新指南进行操作,检查并更新了一些已弃用的代码并尝试了不同的拼写,以及对控制器的更改以某种方式获得问题可能所在的线索。到目前为止什么都没有。
部分只是显示联系人的部分,如下所示:
<!-- description -->
<div class="abc">
<div class="def">
<div class="col-md-12">
<h2>
<f:translate key="extension_name.contact"/>
</h2>
</div>
<div class="name">{person.firstName} {person.lastName}</div>
<div class="jobtitle">{person.jobTitle}</div>
<div class="col-md-4">
<i class="fal fa-envelope"></i>
<f:link.email email=" {person.email}"></f:link.email>
</div>
</div>
</div>
来自 person-Object 的所有内容都不会返回到前端。
如果我现在添加 <f:debug>{_all}</f:debug>
或 <f:debug>{person}</f:debug>
它工作得很好(如果我在控制器内使用 var_dump-class 也是一样)并且我得到了所有内容。但是 <f:debug>{person.firstName}</f:debug>
(或任何其他变量)导致返回 NULL,即使调试器清楚地显示值在那里并且路径也是正确的。
我不认为代码中存在错误。可能有些配置错误? "Extbase Variable Dump"-div 也被渲染了三次,这可能暗示了这个问题,但我完全不知道我可能在哪里看。
如果有人能给我一两点我可以进一步研究的方向的建议,我将不胜感激。可悲的是我完全没有想法。
如何在页面中插入部分内容?
在 9.5 及更高版本中,我认为您需要将变量作为部分调用的参数。
<f:render partial="path/to/partial" arguments="{variableInPartial: variableInCallingPage}" />
要么
<f:render partial="path/to/partial" arguments="{_all}" />
如果 "person" 的数据来自 1:1 关系,检查一次模型是否有 @lazy。如果是这样,请删除 @lazy.
不幸的是,"typo3fluid/fluid":“2.6.7”中发生了一些变化。以至于1:1的关系@懒人不再走弯路
另请参阅:
https://github.com/TYPO3/Fluid/pull/489
https://github.com/TYPO3/Fluid/pull/486#issuecomment-545661652
我正在处理从 8.7.27 到 9.5.9 的 typo3 更新,并且我们自己编写的一个扩展中的一个部分有问题。如果我使用 <f:debug>{_all}</f:debug>
,它只会呈现内容。否则字段保持为空。
到目前为止,我已经尝试按照更新指南进行操作,检查并更新了一些已弃用的代码并尝试了不同的拼写,以及对控制器的更改以某种方式获得问题可能所在的线索。到目前为止什么都没有。
部分只是显示联系人的部分,如下所示:
<!-- description -->
<div class="abc">
<div class="def">
<div class="col-md-12">
<h2>
<f:translate key="extension_name.contact"/>
</h2>
</div>
<div class="name">{person.firstName} {person.lastName}</div>
<div class="jobtitle">{person.jobTitle}</div>
<div class="col-md-4">
<i class="fal fa-envelope"></i>
<f:link.email email=" {person.email}"></f:link.email>
</div>
</div>
</div>
来自 person-Object 的所有内容都不会返回到前端。
如果我现在添加 <f:debug>{_all}</f:debug>
或 <f:debug>{person}</f:debug>
它工作得很好(如果我在控制器内使用 var_dump-class 也是一样)并且我得到了所有内容。但是 <f:debug>{person.firstName}</f:debug>
(或任何其他变量)导致返回 NULL,即使调试器清楚地显示值在那里并且路径也是正确的。
我不认为代码中存在错误。可能有些配置错误? "Extbase Variable Dump"-div 也被渲染了三次,这可能暗示了这个问题,但我完全不知道我可能在哪里看。
如果有人能给我一两点我可以进一步研究的方向的建议,我将不胜感激。可悲的是我完全没有想法。
如何在页面中插入部分内容?
在 9.5 及更高版本中,我认为您需要将变量作为部分调用的参数。
<f:render partial="path/to/partial" arguments="{variableInPartial: variableInCallingPage}" />
要么
<f:render partial="path/to/partial" arguments="{_all}" />
如果 "person" 的数据来自 1:1 关系,检查一次模型是否有 @lazy。如果是这样,请删除 @lazy.
不幸的是,"typo3fluid/fluid":“2.6.7”中发生了一些变化。以至于1:1的关系@懒人不再走弯路
另请参阅: https://github.com/TYPO3/Fluid/pull/489 https://github.com/TYPO3/Fluid/pull/486#issuecomment-545661652