Typo3 Fluid-以动态形式添加计数器

时间:2020-02-27 12:07:38

标签: fluid typo3-7.6.x view-helpers

简而言之,我只想拥有一个从0开始且每次在if中的if-condition为true时都递增的计数器。 我知道如何在javascript中实现这一目标。 Countervar应该留在标签内条目的前面。

<f:for each="{house.offers}" as="offer" key="index">
            <f:if condition="{offer.offerCategory} == {category}">
                <f:then>
                    <div class="form-element-wrap removable">
                        <label class="label" for="{index}"> **Entry** for {category.title}</label>
                        <f:form.hidden name="house[offers][{index}][__identity]" value="{offer.uid}" />
                        <f:form.textfield name="house[offers][{index}][title]" id="{index}" class="text form-element" value="{offer.title}" />
                        <button class="remove-button" role="button" aria-label="delete-button"></button>
                    </div>
                </f:then>
                <f:else>
                    <f:form.hidden name="house[offers][{index}][__identity]" value="{offer.uid}" />
                </f:else>
            </f:if>
        </f:for>

3 个答案:

答案 0 :(得分:1)

在渲染模板时,TYPO3v8和更高版本的supports variables which are set at runtime中的流体。它还supports basic math,因此您应该可以通过这种方式实现所需的功能:

<f:variable name="counter">0</f:variable>

<f:for ...>
    <f:if ...>
        <f:variable name="counter">{counter + 1}</f:variable>
        {counter}
    </f:if>
</f:for>

答案 1 :(得分:1)

在TYPO3v8之前,您可以使用EXT:vhs,它为您提供了一个Viewhelper来设置Fluid变量。

可以通过TypoScript完成计算,然后:

<v:variable.set name="counter"><f:cObject typoscriptObjectPath="lib.calc" data="{counter} + 1" /></v:variable.set>
lib.calc = TEXT
lib.calc.current = 1
lib.calc.prioriCalc = 1

答案 2 :(得分:0)

如前所述,f:variable 只在 version 8 后有效。 在此之前,它需要具有以下命名空间的 vhs 扩展:

{namespace v=FluidTYPO3\Vhs\ViewHelpers}

然后你就可以使用变量了。

<v:variable.set name="counter" value="0" />

{counter}