【问题标题】:Typo3 Update: Partial does not render variable content unless f:debug is usedTypo3 更新:Partial 不呈现变量内容,除非使用 f:debug
【发布时间】:2019-11-06 17:12:19
【问题描述】:

我正在处理从 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 的所有内容都不会返回到前端。

如果我现在添加&lt;f:debug&gt;{_all}&lt;/f:debug&gt;&lt;f:debug&gt;{person}&lt;/f:debug&gt;,它工作得很好(如果我在控制器中使用 var_dump-class 也是一样)并且我得到了所有内容。但是&lt;f:debug&gt;{person.firstName}&lt;/f:debug&gt;(或任何其他变量)会导致返回 NULL,即使调试器清楚地显示值在那里并且路径也是正确的。

我没有假设代码中存在错误。可能是配置错误? “Extbase 变量转储”-div 也被渲染了 3 次,这可能暗示了这个问题,但我完全不知道我可能在哪里寻找。

如果有人能指点一两个我可以进一步研究的方向,我们将不胜感激。可悲的是,我完全没有想法。

【问题讨论】:

  • 如果你使用作曲家尝试typo3fluid/fluid 2.6.1 - 如果问题消失了,问题是由于延迟加载1:n关系> forge.typo3.org/issues/87651

标签: debugging typo3 fluid typo3-9.x


【解决方案1】:

如果“人”的数据来自 1:1 关系,请检查模型是否有 @lazy。如果是这样,请删除 @lazy。

不幸的是,“typo3fluid/fluid”发生了一些变化:“2.6.7”。这样 1:1 的关系 @Lazy 就不再走弯路了。

另请参阅: https://github.com/TYPO3/Fluid/pull/489 https://github.com/TYPO3/Fluid/pull/486#issuecomment-545661652

【讨论】:

  • 那位帮了大忙,谢谢!从模型中移除延迟加载解决了这个问题。
【解决方案2】:

如何在页面中插入部分内容?

在 9.5 及更高版本中,我认为您需要将变量作为参数提供给部分调用。

&lt;f:render partial="path/to/partial" arguments="{variableInPartial: variableInCallingPage}" /&gt; 或者 &lt;f:render partial="path/to/partial" arguments="{_all}" /&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2021-09-11
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多