2017-09-01 6 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> 

要素は、その後、特定の方法で表示されます。

は今、私は 最初の要素は「 最初」と呼ばれる 1つの余分クラスを持っていると思います。最初の要素は次のようになります。

<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> 
    ... 

しかし、その後、私はまだクラスを挿入する必要があり、それを解決するためのより良い方法がなければならないように、それはとにかく感じています。

誰かが私を正しい方向に向けることができますか?


編集(ソリューション):私は子供ではなく、その後の拡張で-wrapping "<div class="childElement">"をした後

受け入れ答えは私のために働きました。 私のソリューションは、次のようになります。あなたは、単に<f:then>で自分を繰り返さないためにf:if viewhelperのインラインバージョンを使用することができます

<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: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

すごく速かった!そして働いた。 (私はそれをレンダリングする前に子供を包んでいなければならなかったが、私はちょうど子供を変えることができるので、これは問題ではなく、おそらく "より良い練習"であろう)...ありがとう! – Simon

関連する問題