TYPO3 Partials 渲染不正常

TYPO3 Partials rendering does not work properly

问题如下。我做了一个扩展,我有一个列表视图和详细视图。列表视图工作正常。当我进入详细视图并尝试通过 Show.html 呈现部分时,问题出现了。 结构后会详细说明问题

这是结构:

↳ 私人

↳ 部分

↳ 详情

↳ 公寓

↳ 模板

↳ ImmobilieImport

↳ List.html

↳ Show.html

所以在 Show.html 我有这个:

<f:render partial="Detail/Apartment" arguments="{_all}" />

在 Apartment.html 上我有一个要读取的变量:

{immobilieImport.street}

当我调用列表视图并单击一个对象时,它会将我重定向到它应该执行的详细视图。我得到了正确的值,一切正常。但是当我返回到另一个对象并单击它以访问详细视图时,它既不渲染部分也不渲染 Show.html。

我的配置 no_cache = 0 另外我还在页面属性上关闭了缓存。

当我使用 <f:debug>{immobilieImport}</f:debug> 时,我得到了所有正确的值,但它没有在前端显示 html。

TYPO3 版本 7.6.23

知道发生了什么事吗?如果您需要更多信息,请随时询问。

此致

我找到了我的问题的解决方案,我会详细解释,所以如果其他人有同样的问题,他可以找到答案。

The problem could be very common if someone using FlexForm settings.

在我的列表视图中,我有一个 <f:if> 语句,我在其中评估创建日期是否小于 30 天。我通过让用户自己定义时间来使其变得灵活。为了让用户这样做,您需要在 FlexForm 上添加设置。所以在我的 FlexForm 上,我有这个:

<settings.timeToGetOld>
   <TCEforms>
      <label>Number of days that stays as "New"</label>
      <displayCond>FIELD:switchableControllerActions:=:ImmobilieImport->list;ImmobilieImport->show</displayCond>
      <config>
         <type>input</type>
         <size>6</size>
         <max>6</max>
         <eval>int</eval>
         <default>30</default>
      </config>
   </TCEforms>
</settings.timeToGetOld>

FIELD:switchableControllerActions:=:ImmobilieImport->list;ImmobilieImport->show

这实际上只是列表视图,它是这样写的,因为它是 "Controller action combinations"。

在我的控制器上并列出操作:

$this->view->assign('settings', $this->settings);

然后在我的液体上:

f:if condition="{f:format.date(date: '{immobilieImport.creationDate}', format: 'Y-m-d')} > {f:format.date(date: 'now-{settings.timeToGetOld} days', format: 'Y-m-d')}"><span class="new_object">New</span>

当我尝试在我的详细信息视图上使用该评估时出现问题。由于我没有为详细视图指定任何设置字段,流体引擎无法处理评估,因此它通过不显示任何内容的错误来解决。鉴于它从上到下读取文档,当 Fluid Engine 遇到问题时,它停止了。

在我弄清楚问题出在哪里之后,我在我的 FlexForm 上又添加了一项设置:

<settings.timeToGetOldDetailView>
       <TCEforms>
          <label>Number of days that stays as "New"</label>
          <displayCond>FIELD:switchableControllerActions:=:ImmobilieImport->show</displayCond>
          <config>
             <type>input</type>
             <size>6</size>
             <max>6</max>
             <eval>int</eval>
             <default>30</default>
          </config>
       </TCEforms>
    </settings.timeToGetOldDetailView>

现在我只将 displayCond 更改为详细视图(显示)并且我也将流体 (Show.html) 更改为 {settings.timeToGetOldDetailView}:

f:if condition="{f:format.date(date: '{immobilieImport.creationDate}', format: 'Y-m-d')} > {f:format.date(date: 'now-{settings.timeToGetOldDetailView} days', format: 'Y-m-d')}"><span class="new_object">New</span>

我还在我的控制器上添加了这个:

$this->view->assign('settings', $this->settings);

现在一切正常。