我想做一个简单的比较,比如相当于:
if ($somevar === 'somestring')
现在,我已经找到了一些示例,其中这样做:
<f:if condition="{somevar} == 'somestring'">
...
TYPO3核心9.5中还有很多地方,example。
但官方文档告诉我们,我们必须使用基于数组的奇怪的解决方法:
不允许在XX / YY处使用字符串,但是,暂时可以通过比较数组来实现字符串比较
由于复杂的实现,使用Fluid还不能与字符串(如....)进行比较。
(Qazxswpoi)
不管它是什么意思 ...
为了避免问为什么:在TYPO3 9中对字符串和变量进行比较的推荐方法是什么?从什么时候开始?
从TYPO3 8.7开始,Fluid if-ViewHelper可以进行字符串,数字和数组比较,而无需将字符串放入数组。但是,不支持globbing或正则表达式(如果在PHP中编写自定义ViewHelper,则天空是极限)。
支持的比较运算符是:==,!=,<,<=,>,> =和%。还支持逻辑运算符&&和||。你可以用一个布尔值来否定! (比如!{enable})。
我听说文档团队正在努力更新和重新组织Fluid文档。与此同时,这个页面有许多有用的提示和技巧:Extbase / Fluid
示例(使用标记和内联语法的混合):
https://usetypo3.com/24-fluid-tips.html
我认为文档不是最新的。
在早期版本(少于7个)中,无法比较字符串。由于需要一种解决方法并在阵列中找到,因此它以多种方式进行了推广。所以你发现网络充满了它。
今天可以比较字符串,也可以比较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')}
和'AND'多个表达式。