流式编程:如果-那么-否则如果-否则

8

我对Fluid不太熟悉,我希望在Fluid中制作以下PHP语句。

if ($var == 'something') {
   // do something
} elseif ($other-var == 'something else') {
   // do something else
} else {
   // do then the other thin
}

我该如何在Fluid中实现这个功能?文档中似乎没有elseif语句的说明。
3个回答

25

自TYPO3 8LTS版本以来

自版本8起,TYPO3使用独立版本的Fluid模板引擎,该引擎经过大量开发并获得了许多新功能,例如elseif语句:

<f:if condition="{var} == 'something'">
    <f:then>do something</f:then>
    <f:else if="{other-var} == 'something else'">do something else</f:else>
    <f:else>do the other thing</f:else>
</f:if>

此外,还支持像这样的语法:

<f:if condition="{something} || {someOtherThing}">
    Something or someOtherThing
</f:if>

截止TYPO3 7LTS版本

使用Plain Fluid,您可以嵌套两个if ViewHelper:

<f:if condition="{var} == 'something'">
    <f:then>
       // do something
    </f:then>
    <f:else>
        <f:if condition="{other-var} == 'something else'">
            <f:then>
                // do something else
            </f:then>
           <f:else>
               // do then the other thing
           </f:else>
        </f:if>
    </f:else>
</f:if>

或者你可以实现自己的ViewHelper,或者使用一个像VHS这样的ViewHelper库,它具有更优雅的ViewHelper来实现这个功能。


在TYPO3 8中,请确保f:else if =“{other-var}”中的{other-var}变量不包含类似于“100% foo-0% bar”这样需要计算的字符串。否则将会导致“除以零”未捕获TYPO3异常错误。 - jokumer

0

在 Typo3 7 LTS 中存在 AND 和 OR 的可能性:

http://typo3blogger.de/fluid-ifviewhelper-conditions-verknupfen/

AND:

<f:if condition="{0: value1, 1: value2} == {0: myValue1, 2: myValue2}"> 
    <!-- your code-->
</f:if>

或者(在检查至少一个变量不为空的示例中):

<f:if condition="{0: value1, 1: value2} != {0: 0, 2: 0}"> 
    <!-- your code-->
</f:if>

希望这能帮助到某个人。

0

有没有关于“else if”的内联符号? 这个不起作用:

{f:if(condition: '{value} == 1', then: 'Value is 1', else if: '{value} == 2', then:'Value is 2')}

{f:if(condition: '{condition}', then: 'true', else: 'false')} - Meek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接