如何在TYPO3 Fluid中比较字符串和变量

时间:2019-03-18 13:34:48

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

我想做一个简单的比较,例如:

if ($somevar === 'somestring')

现在,我发现了一些这样的示例:

<f:if condition="{somevar} == 'somestring'"> 
...

在TYPO3核心9.5中,example也有很多地方。

但是官方文档告诉我们,否则,我们必须使用基于数组的怪异解决方法:

  

不允许使用XX / YY处的字符串,但是暂时可以通过比较数组来实现字符串比较

If ViewHelper

  

由于复杂的实现,因此与Fluid之类的字符串进行比较,例如....尚无法实现。

Extbase / Fluid

这意味着...

为了避免询问原因:在TYPO3 9中比较字符串和变量的推荐方法是什么?什么时候可行?

2 个答案:

答案 0 :(得分:1)

从TYPO3 8.7开始,Fluid if-ViewHelper可以进行字符串,数字和数组比较,而无需将字符串放入数组的解决方法。但是,不支持通配符或正则表达式(如果您使用PHP编写自定义ViewHelper,则天空是极限。)

支持的比较运算符为==,!=,<,<=,>,> =和%。还支持逻辑运算符&&和||。您可以使用取反布尔值! (如!{enable})。

我听说文档小组正在努力更新和重组Fluid文档。同时,此页面上有许多个有用的提示和技巧:https://usetypo3.com/24-fluid-tips.html

示例(混合使用标记和内联语法):

1:
<f:variable name="foo">stuff</f:variable>
<f:if condition="{foo} == 'stuff'">
    <f:render partial="FooPartial" arguments="{foo: foo}" />
</f:if>

2:
{f:variable(name: 'bar', value: 123)}
{f:variable(name: 'baz', value: 50)}
{f:if(condition: '{bar} > {baz}', then: 'This will print')}

3:
<f:comment>&& and ||, too:</f:comment>
<f:if condition="{bar} > {baz} && {baz} < 100">This will print.</f:if>

4:
<f:comment>The string "false" will evaluate to boolean false:</f:comment>
{f:variable(name: 'untrue', value: 'false')}
{f:if(condition: untrue, then: 'Will not print', else: 'Will print')}

答案 1 :(得分:0)

我认为文档不是最新的。

在早期版本(小于7)中,无法比较字符串。由于需要一种解决方法,并且可以在阵列中找到它,因此以多种方式对其进行了升级。这样您就可以在网上找到很多东西。

如今,可以比较字符串,也可以比较OR和'AND'多个表达式。