如何在TYPO3 Fluid中将字符串与变量进行比较

4

我想要进行简单的比较,例如等价于:

if ($somevar === 'somestring')

现在,我已经找到了一些代码示例,如下所示:

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

在 TYPO3 核心 9.5 中,有多个位置会用到这种方法,例如
但官方文档告诉我们,不能使用字符串比较,必须使用基于数组的奇怪解决方法:

不允许在 XX/YY 处使用字符串,然而目前可以通过比较数组实现字符串比较

If ViewHelper

由于复杂的实现方式,Fluid 尚不支持像 .... 这样的字符串比较。

(Extbase / Fluid
不管这些是什么意思...
为了避免问为什么:在 TYPO3 9 中,进行字符串和变量比较的推荐方法是什么?自从何时开始支持这种方法?
2个回答

6
从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>
  1. 比较整数(流式行内语法)
{f:variable(name: 'bar', value: 123)}
{f:variable(name: 'baz', value: 50)}
{f:if(condition: '{bar} > {baz}', then: 'This will print')}
  1. 布尔运算符: &&, ||
<f:if condition="{bar} > {baz} && {baz} < 100">This will print.</f:if>
  1. 字符串 "false" 将被视为布尔值 false (Fluid 行内语法)
{f:variable(name: 'untrue', value: 'false')}
{f:if(condition: untrue, then: 'Will not print', else: 'Will print')}

1
我认为文档不是最新的。
在早期版本(小于7)中,无法比较字符串。由于需要解决问题并找到了使用数组的方法,因此它被多种方式推广。因此你可以在网络上找到很多相关内容。
现在可以比较字符串,还可以OR和'AND'多个表达式。

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