The*_* Qs 4 typo3 fluid typoscript
我在扩展程序setup.txt打字稿中定义一个数组,如下所示:
settings{
halls {
0 = Default
1 = Mississauga
2 = Halifax
3 = Niagara Falls
4 = Oakville
5 = Pickering
}}
Run Code Online (Sandbox Code Playgroud)
如何在流体模板中找到Halls数组的长度?我希望if条件如果长度大于1则做一件事,如果不大于1,则要做另一件事。
我在extbase 1.3中使用typo3 v4.5.32。
谢谢。我试过了,但是它发出了两个标签,而不是一个。第一个if表示要证明有多个元素,第二个if仅打印出第一个元素。
<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>
Run Code Online (Sandbox Code Playgroud)
为什么?
更新:这是我的工作,因为流体中缺少“数组长度> 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>
Run Code Online (Sandbox Code Playgroud)
并打印出数据:
<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>
Run Code Online (Sandbox Code Playgroud)
难看,但似乎可以工作。
更新2:DOH!我错过了总计,只是我想要的,但是我在寻找长度或计数,所以这段代码是我想要的:
<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>
Run Code Online (Sandbox Code Playgroud)
您可以使用f:countViewHelper 查找数组的长度。就像其他ViewHelper一样,它可以用作内联符号(您可以在此处找到更多信息)
正确的代码是:
<f:if condition="{settings.halls -> f.count()} > 1">
<f:then>
//your code for then
</f:then>
<f:else>
//your code for else
</f:else>
</f:if>
Run Code Online (Sandbox Code Playgroud)
请参阅上面的 update#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>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4111 次 |
| 最近记录: |