如何在 TYPO3 Fluid 中比较字符串和变量
How to compare a string with a variable in TYPO3 Fluid
我想做一个简单的比较,比如相当于:
if ($somevar === 'somestring')
现在,我找到了一些这样做的例子:
<f:if condition="{somevar} == 'somestring'">
...
TYPO3核心9.5也有很多地方,example。
但官方文档另有说明,我们必须使用基于数组的奇怪解决方法:
Strings at XX/YY are NOT allowed, however, for the time being, a string comparison can be achieved with comparing arrays
Comparisons with strings, like ...., are not possible with Fluid yet because of the complex implementation.
随便什么意思...
为了避免问为什么:在 TYPO3 9 中比较字符串和变量的推荐方法是什么?从什么时候开始可以这样?
我认为文档不是最新的。
在早期版本(小于 7)中,无法比较字符串。由于阵列需要并找到了解决方法,因此以多种方式对其进行了推广。所以你会发现网上到处都是它。
现在可以比较字符串,也可以比较 OR
和 'AND' 多个表达式。
从 TYPO3 8.7 开始,Fluid if-ViewHelper 可以进行字符串、数字和数组比较,而无需将字符串放入数组的变通方法。但是,不支持 globbing 或正则表达式(如果您在 PHP 中编写自定义 ViewHelper,则没有限制)。
支持的比较运算符有:==、!=、<、<=、>、>= 和 %。还支持逻辑运算符 && 和 ||。你可以否定一个布尔值! (比如 !{enable})。
我听说文档团队正在努力更新和重组 Fluid 文档。同时,此页面有 许多 有用的提示和技巧:https://usetypo3.com/24-fluid-tips.html
示例(混合使用标记和内联语法):
- 字符串比较:比较变量与字符串
<f:variable name="foo">stuff</f:variable>
<f:if condition="{foo} == 'stuff'">
<f:render partial="FooPartial" arguments="{foo: foo}" />
</f:if>
- 比较整数(流畅的内联语法)
{f:variable(name: 'bar', value: 123)}
{f:variable(name: 'baz', value: 50)}
{f:if(condition: '{bar} > {baz}', then: 'This will print')}
- 布尔运算符:&&、||
<f:if condition="{bar} > {baz} && {baz} < 100">This will print.</f:if>
- 字符串“false”的计算结果为布尔值 false(流体内联语法)
{f:variable(name: 'untrue', value: 'false')}
{f:if(condition: untrue, then: 'Will not print', else: 'Will print')}
我想做一个简单的比较,比如相当于:
if ($somevar === 'somestring')
现在,我找到了一些这样做的例子:
<f:if condition="{somevar} == 'somestring'">
...
TYPO3核心9.5也有很多地方,example。
但官方文档另有说明,我们必须使用基于数组的奇怪解决方法:
Strings at XX/YY are NOT allowed, however, for the time being, a string comparison can be achieved with comparing arrays
Comparisons with strings, like ...., are not possible with Fluid yet because of the complex implementation.
随便什么意思...
为了避免问为什么:在 TYPO3 9 中比较字符串和变量的推荐方法是什么?从什么时候开始可以这样?
我认为文档不是最新的。
在早期版本(小于 7)中,无法比较字符串。由于阵列需要并找到了解决方法,因此以多种方式对其进行了推广。所以你会发现网上到处都是它。
现在可以比较字符串,也可以比较 OR
和 'AND' 多个表达式。
从 TYPO3 8.7 开始,Fluid if-ViewHelper 可以进行字符串、数字和数组比较,而无需将字符串放入数组的变通方法。但是,不支持 globbing 或正则表达式(如果您在 PHP 中编写自定义 ViewHelper,则没有限制)。
支持的比较运算符有:==、!=、<、<=、>、>= 和 %。还支持逻辑运算符 && 和 ||。你可以否定一个布尔值! (比如 !{enable})。
我听说文档团队正在努力更新和重组 Fluid 文档。同时,此页面有 许多 有用的提示和技巧:https://usetypo3.com/24-fluid-tips.html
示例(混合使用标记和内联语法):
- 字符串比较:比较变量与字符串
<f:variable name="foo">stuff</f:variable>
<f:if condition="{foo} == 'stuff'">
<f:render partial="FooPartial" arguments="{foo: foo}" />
</f:if>
- 比较整数(流畅的内联语法)
{f:variable(name: 'bar', value: 123)}
{f:variable(name: 'baz', value: 50)}
{f:if(condition: '{bar} > {baz}', then: 'This will print')}
- 布尔运算符:&&、||
<f:if condition="{bar} > {baz} && {baz} < 100">This will print.</f:if>
- 字符串“false”的计算结果为布尔值 false(流体内联语法)
{f:variable(name: 'untrue', value: 'false')}
{f:if(condition: untrue, then: 'Will not print', else: 'Will print')}