1

由于 TYPO3 9.5 LTS 建议对 TypoScript 条件使用 Symfony 表达式语言。

我在迁移它们时遇到了一些麻烦:

旧语法:

// Matches any applicationContext with a rootContext of "Production", for example "Production/Live" or "Production/Staging":
[applicationContext = Development*]

// Matches any applicationContext starting with "Production/Dev"
[applicationContext = /^Production\/Dev/]

到新的表达语言:

我尝试了以下但没有成功:

[applicationContext == "/^Development\/Docker/"]

[applicationContext == "Development*"]

[applicationContext == "Development/*"]

我没有找到任何例子。我不确定条件测试是否已经基于表达式语言。(https://review.typo3.org/#/c/57787/

如果有人建议如何使用该功能添加以前的条件,那就太好了

4

4 回答 4

5

您需要使用 Symfony 表达式语言的matches比较运算符。这样您就可以使用正则表达式进行部分匹配:

[applicationContext matches "/^Development/"]

这将匹配任何Development上下文。

于 2018-11-22T12:23:09.350 回答
4

以下条件匹配任何以“ Production/Dev”开头的 applicationContext

[applicationContext matches '/^Production\\\\\\\\/Dev/']

为什么有这么多反斜杠?在 Symfony 表达式语言中,反斜杠 ( \) 必须\\\\在字符串中用 4 个反斜杠 () 转义,在正则表达式中用 8 个反斜杠 () 转义\\\\\\\\

(自 TYPO3 9 LTS 以来, Symfony 表达式语言作为 TypoScript 条件的基础)


编辑 2020-02:使用不同的正则表达式分隔符使 TYPO3 中的 applicationContext 条件的可读性更好:

而不是/我们可以#用作正则表达式分隔符。

这里有些例子:

匹配“ Development”应用上下文

[applicationContext matches "#^Development#"]

Production/Dev匹配以“ ”开头的 applicationContext

[applicationContext matches "#^Production/Dev#"]

Production/Dev匹配以 "或Production/Staging"开头的 applicationContext

[applicationContext matches "#^Production/(Dev|Staging)#"]

匹配以 " 开头的 applicationContextProduction/Live

[applicationContext matches "#^Production/Live#"]

匹配以 " 开头的 applicationContextProduction/Live和活动的 TYPO3 后端用户会话

[applicationContext matches "#^Production/Live#" && getTSFE().isBackendUserLoggedIn()]

Production匹配除以 " "开头的任何 applicationContext

[not (applicationContext matches "#Production#")]

将 applicationContext 与值 " Production/Live/ClusterServer1"完全匹配

[applicationContext == "Production/Live/ClusterServer1"]
于 2018-11-22T12:33:20.363 回答
-1

此正则表达式匹配确切的字符串“Production”和任何以“Production/”开头的字符串,例如“Production/Staging”。

匹配 applicationContext 是“Production”或以“Production/”开头

[applicationContext matches '#^Production(/|$)#']
于 2021-01-20T15:21:15.047 回答
-3

在 TYPO3 9 你可以做[applicationContext = Development/*]

于 2019-02-28T15:11:00.603 回答