【问题标题】:How to compare a string with a variable in TYPO3 Fluid如何将字符串与 TYPO3 Fluid 中的变量进行比较
【发布时间】:2019-03-18 13:34:48
【问题描述】:

我想做一个简单的比较,比如相当于:

if ($somevar === 'somestring')

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

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

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

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

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

If ViewHelper

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

(Extbase / Fluid)

不管这意味着什么......

为了避免问为什么:在 TYPO3 9 中比较字符串和变量的推荐方法是什么?从什么时候开始?

【问题讨论】:

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


    【解决方案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>
    
    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(流体内联语法)
    {f:variable(name: 'untrue', value: 'false')}
    {f:if(condition: untrue, then: 'Will not print', else: 'Will print')}
    

    【讨论】:

      【解决方案2】:

      我认为文档不是最新的。

      在早期版本(少于 7 个)中,无法比较字符串。由于需要并在阵列中找到了一种解决方法,因此以多种方式对其进行了推广。所以你会发现网络上到处都是。

      现在可以比较字符串,也可以比较 OR 和“与”多个表达式。

      【讨论】:

        猜你喜欢
        • 2016-03-03
        • 2015-10-03
        • 2018-03-17
        • 1970-01-01
        • 1970-01-01
        • 2012-04-06
        • 2015-08-14
        • 2017-03-02
        • 1970-01-01
        相关资源
        最近更新 更多