添加到Fluid阵列的第二个位置

时间:2018-01-15 04:49:59

标签: typo3 fluid

目前我有这个代码用<report>

包装每两个项目
<li></li>

让我们说{modules} = [A,B,C,D],输出是这样的:

<f:for each="{modules}" as="module" iteration="loop">
            <f:cycle values="{0: 1, 1: 0}" as="header">
                <li>
            </f:cycle>
            ...stuff here...
            <f:cycle values="{0: 0, 1: 1}" as="footer">
                </li>
            </f:cycle>
      </f:for>

我需要做的是将自定义html添加到第二个位置。所以我想要的输出是:

<li>AB</li>
<li>CD</li>

我该怎么做?

2 个答案:

答案 0 :(得分:1)

你可以这样做。

<f:for each="{modules}" as="module" iteration="iteration">
    <f:if condition="{iteration.isFirst}">
        <f:then>
            <li>
        </f:then>
        <f:else>
            <f:if condition="{iteration.index}%2">
                <f:then></f:then>
                <f:else><li></f:else>
            </f:if> 
           </f:else> 
        </f:if>
        <!--
            Here Your Content
         -->
        <f:if condition="{iteration.isLast}">
        <f:then>
            </li> 
        </f:then>
        <f:else>
            <f:if condition="{iteration.cycle}%2"> 
                <f:then></f:then>
                <f:else></li></f:else>
            </f:if>
        </f:else>
    </f:if> 
</f:for>

答案 1 :(得分:1)

对于您更新的问题,我想说,在通过Controller向View添加模块之前,您可能希望使用自己的Helper类解决此问题。

然而,可以在模板中简单地构建它:

以下是有关for ViewHelper

的文档

为简单起见,我会做以下事情:

<f:for each="{modules}" as="module" iteration="loop">

            <f:if condition="{loop.isFirst}">
              <f:then>
                <li>
                 {module}
                 ##extra_code##
                </li>
              </f:then>
              <f:else>
                  <f:if condition="{loop.isEven}">
                     <li>
                  </f:if>
                    ...stuff here...
                  <f:if condition="{loop.isOdd} || {loop.isLast}">
                    </li>
                  </f:if>                  
            </f:else>
            </f:if>

      </f:for>

注意:第一个元素是&#34;奇数&#34;因为isOdd采用当前的交互(基于&#34;周期&#34;),从1开始。

对于第一个元素,有自己的块。您可以使用第一个模块并编写自己的代码。它只会运行一次。

从第二个元素到最后一个元素,它将在一个li逻辑中使用2元素。这里只有一个有趣的事情,我们需要把isOdd或isLast总是关闭最后一个li,即使你有偶数个元素。