TYPO3-复杂流体条件f:如果在8.7中无效

时间:2018-07-05 14:23:49

标签: typo3 fluid typo3-8.x typo3-8.7.x

我在8.7中尝试了一个复杂的f:if条件,例如:https://docs.typo3.org/typo3cms/ExtbaseGuide/Fluid/ViewHelper/If.html

...但是我所有的尝试都失败了(不起作用):

<h3 class="record-title" id="title"><f:if condition="{record.type}!='medium' || {record.type}!='large'">{record.firstname} - </f:if>{record.name}</h3>
<h3 class="record-title" id="title"><f:if condition="{0:record.type,1:record.type}!={0:medium,1:large}">{record.firstname} - </f:if>{record.name}</h3>
<h3 class="record-title" id="title"><f:if condition="{0:record.type,1:record.type}!={0:'medium',1:'large'}">{record.firstname} - </f:if>{record.name}</h3>

...相反,我需要这样做(工作):

<h3 class="record-title" id="title">
    <f:if condition="{record.type}!='medium'">
        <f:if condition="{record.type}!='large'">
            {record.firstname} - 
        </f:if>
    </f:if>
    {record.name}
</h3>

为什么它不能按说明工作?我正在使用8.7.16 ...

1 个答案:

答案 0 :(得分:2)

您的第一个条件正常工作,但与适合您的示例并不相同,例如,嵌套的<f:if>的工作方式类似于&&,而您的第一个条件使用||

第二种情况是缺少引号。

第三条将始终返回true,因为您将['X', 'X']['medium', 'large']之类的东西进行比较。如果X == 'medium',则X != 'large'-没有其他方法。

要使其正常运行,您只需在第一个条件下将||更改为&&

<h3 class="record-title" id="title">
    <f:if condition="{record.type}!='medium' && {record.type}!='large'">{record.firstname} - </f:if>
    {record.name}
</h3>