2017-09-01 14 views
0

我喂Contentelments到利用流體的擴展:TYPO3的流體:添加類來元,如果它是第一個

<f:for each="{field.children}" as="myObj" iteration="iterator"> 
    {myObj.render -> f:format.raw()} 
</f:for> 

這是工作的罰款。

元素是這個樣子:

<div class="childElement"> 
    <h1>I'm a Caption!</h1> 
    <p>I'm some text.....</p> 
</div> 

的元素,然後以某種方式顯示。

現在我想第一要素一個名爲「第一」額外的類。然後第一個元素是這樣的:

<div class="childElement first"> 
    <h1>I'm a Caption!</h1> 
    <p>I'm some text.....</p> 
</div> 

我試圖這種使用迭代器,如果迭代器「isfirst」只需勾選您解決。事情是這樣的:

<f:for each="{field.children}" as="myObj" iteration="iteration"> 
<f:if condition="iteration.isFirst"> 
    <f:then> 
    ... 

但後來我還是需要插入的類,它反正感覺,必須有解決這個問題的較好方法。

有人可能指向我正確的方向嗎?


編輯(解決方案):

接受的答案爲我工作,我做了"<div class="childElement">"後的延伸,計量而不是在孩子。 我的解決方案,現在看起來是這樣的:

<f:for each="{field.children}" as="myObj" iteration="iterator"> 
    <div class="childElement {f:if(condition:iterator.isFirst, then: ' first')}"> 
    {childDce.render -> f:format.raw()} 
    </div> 
</f:for> 

回答

2

您可以簡單地使用f:if viewhelper的在線版本,以避免重複自己在一個<f:then> - ><f:else>結構:

<f:for each="{field.children}" as="myObj" iteration="iter"> 
    <div class="childElement{f:if(condition:iter.isFirst, then: ' first')}"> 

既然你沒有否則,您可以放下它。 根據您的流體版本,則可能需要更多的花括號來包裝你的條件表達式,像這樣:

<f:for each="{field.children}" as="myObj" iteration="iter"> 
    <div class="childElement{f:if(condition: '{iter.isFirst}', then: ' first')}"> 

但是這不應該是必要的(雖然它的工作原理)。

+0

哇,太快了!和工作。 (Allthough我必須在渲染之前包裹孩子,但由於我可以改變孩子,這不會是一個問題,反正可能是「更好的練習」......)謝謝! – Simon

相關問題