【发布时间】:2014-01-18 12:13:45
【问题描述】:
我在我的扩展 setup.txt 打字稿中定义了一个数组,如下所示:
settings{
halls {
0 = Default
1 = Mississauga
2 = Halifax
3 = Niagara Falls
4 = Oakville
5 = Pickering
}}
如何在我的流体模板中找到大厅数组的长度?如果长度大于 1,我想要一个 if 条件做一件事,否则做另一件事。
我正在使用带有 extbase 1.3 的typo3 v4.5.32。
谢谢。
我试过了,但它输出了两个<th> 标签而不是一个。第一个 if 是为了证明有多个元素,下一个是为了打印出 <th>,只有当它是第一个元素时。
<f:for each="{settings.halls}" as="hall" key="number" iteration="itemIteration">
<f:if condition="{itemIteration.isFirst != itemIteration.isLast}">
<f:if condition="{itemIteration.index == 0}">
<th>
<f:translate key="tx_bpscoupons_domain_model_coupon.hall" />
</th>
</f:if>
</f:if>
</f:for>
为什么?
更新:这是我的解决方法,因为流体中缺少“数组长度 > 1”特征
<f:for each="{settings.halls}" as="hall" key="number" iteration="itemIteration">
<f:if condition="{itemIteration.isFirst}">
<f:then>
<f:if condition="{itemIteration.isLast}">
// if both first and last there is only one so skip
</f:if>
</f:then>
<f:else>
<f:if condition="{itemIteration.isLast}">
//if there is more than one element in halls then eventually you'll get here once so print out th tags
<th>
<f:translate key="tx_bpscoupons_domain_model_coupon.hall" />
</th>
</f:if>
</f:else>
</f:if>
</f:for>
并打印出数据:
<f:for each="{settings.halls}" as="hall" key="number" iteration="itemIteration">
<f:if condition="{itemIteration.isFirst}">
<f:then>
<f:if condition="{itemIteration.isLast}">
<f:then>
</f:then>
<f:else>
<f:if condition="{number} == {coupon.hall}">
<td>{hall}</td>
</f:if>
</f:else>
</f:if>
</f:then>
<f:else>
<f:if condition="{number} == {coupon.hall}">
<td>{hall}</td>
</f:if>
</f:else>
</f:if>
</f:for>
丑陋但似乎有效。
更新 2: 噢噢噢!!!我错过了总数,正是我需要的,但我正在寻找长度或计数,所以这段代码就是我想要的:
<f:for each="{settings.halls}" as="hall" key="number" iteration="itemIteration">
<f:if condition="{itemIteration.total} > 1">
<f:if condition="{itemIteration.isLast}">
<th><f:translate key="tx_bpscoupons_domain_model_coupon.hall" /></th>
</f:if>
</f:if>
</f:for>
【问题讨论】:
-
即使您自己回答了问题,也请关闭。
标签: typo3 typoscript fluid