添加到 Fluid 数组的第二个位置
Add to the second position of a Fluid array
目前我有这段代码用 <li></li>
包装每 2 个项目
<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>
假设 {modules} = [A,B,C,D] 输出是这样的:
<li>AB</li>
<li>CD</li>
我需要做的是将自定义 html 添加到第二个位置。所以我想要的输出是:
<li>AX</li>
<li>BC</li>
<li>D</li>
我该怎么做?
您可以像下面这样操作。
<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>
对于您更新的问题,我想说的是,在通过控制器向视图添加模块之前,您可能希望使用自己的助手 class 解决此问题。
但是可以在模板中简单地构建它:
这是关于 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>
注意:第一个元素将是"odd",因为isOdd采用当前的interation(基于"cycle"),从1开始。
第一个元素是您自己的块。您可以使用第一个模块并编写自己的代码。它只会 运行 一次。
从第二个元素到最后一个元素将使用一个li逻辑中的2个元素。这只是一件有趣的事情,我们需要使用 isOdd OR isLast 来始终关闭最后一个 li,即使您有偶数个元素。
目前我有这段代码用 <li></li>
<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>
假设 {modules} = [A,B,C,D] 输出是这样的:
<li>AB</li>
<li>CD</li>
我需要做的是将自定义 html 添加到第二个位置。所以我想要的输出是:
<li>AX</li>
<li>BC</li>
<li>D</li>
我该怎么做?
您可以像下面这样操作。
<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>
对于您更新的问题,我想说的是,在通过控制器向视图添加模块之前,您可能希望使用自己的助手 class 解决此问题。
但是可以在模板中简单地构建它:
这是关于 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>
注意:第一个元素将是"odd",因为isOdd采用当前的interation(基于"cycle"),从1开始。
第一个元素是您自己的块。您可以使用第一个模块并编写自己的代码。它只会 运行 一次。
从第二个元素到最后一个元素将使用一个li逻辑中的2个元素。这只是一件有趣的事情,我们需要使用 isOdd OR isLast 来始终关闭最后一个 li,即使您有偶数个元素。