TYPO3部分渲染无法正常工作

时间:2018-02-20 11:14:50

标签: php typo3 render fluid partials

问题如下。我做了一个扩展,我有一个列表视图和详细信息视图。列表视图工作正常。当我进入详细视图并尝试通过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

任何想法发生了什么?如果您需要更多信息,请随时提出。

祝你好运

1 个答案:

答案 0 :(得分:0)

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

  

如果有人使用FlexForm设置,问题可能非常普遍。

在我的列表视图中,我有一个<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>
  

领域:switchableControllerActions:=:ImmobilieImport-&GT;列表; ImmobilieImport-&gt;显示

这实际上只是列表视图,它的编写方式是因为它是&#34;控制器动作组合&#34;。

在我的控制器和列表操作上:

$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>

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

在我弄清楚问题是什么后,我又在我的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仅更改为详情视图(显示),并且我已将我的Fluid(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);

现在一切正常。