Typo3 无法使用通配符或子上下文键入脚本applicationContext条件
由于TYPO3 9.5,LTS建议在打字条件下使用Symfony表达式语言 我在迁移它们时遇到了一些问题: 旧语法: 对于新的表达语言: 我尝试了以下方法但没有成功: 我没有找到任何例子。我不确定条件测试是否已经基于表达式语言 如果有人建议如何使用该功能来添加条件,那就太好了,就像以前一样您需要使用Symfony表达式语言的。通过这种方式,您可以使用正则表达式进行部分匹配:Typo3 无法使用通配符或子上下文键入脚本applicationContext条件,typo3,typoscript,typo3-9.x,Typo3,Typoscript,Typo3 9.x,由于TYPO3 9.5,LTS建议在打字条件下使用Symfony表达式语言 我在迁移它们时遇到了一些问题: 旧语法: 对于新的表达语言: 我尝试了以下方法但没有成功: 我没有找到任何例子。我不确定条件测试是否已经基于表达式语言 如果有人建议如何使用该功能来添加条件,那就太好了,就像以前一样您需要使用Symfony表达式语言的。通过这种方式,您可以使用正则表达式进行部分匹配: [applicationContext matches "/^Development/"] 这将匹配任何开发上下文。您需
[applicationContext matches "/^Development/"]
这将匹配任何开发上下文。您需要使用Symfony表达式语言的。通过这种方式,您可以使用正则表达式进行部分匹配:
[applicationContext matches "/^Development/"]
这将匹配任何开发上下文。以下条件匹配从生产/Dev开始的任何applicationContext
为什么有这么多反斜杠?反斜杠\必须由字符串中的4个反斜杠\\\\和正则表达式中的8个反斜杠以Symfony表达式语言转义
自TYPO3 9 LTS起,作为打字脚本条件的基础
编辑2020-02:使用不同的正则表达式分隔符使TYPO3中的applicationContext条件的可读性更好:
而不是/我们可以用作正则表达式分隔符
以下是一些例子:
匹配开发应用程序上下文
匹配以生产/开发开始的applicationContext
匹配以生产/开发或生产/暂存开头的applicationContext
匹配从Production/Live开始的applicationContext
匹配从Production/Live开始的applicationContext和活动的TYPO3后端用户会话
匹配任何applicationContext,但以生产环境开头的应用程序除外
将applicationContext与值Production/Live/ClusterServer1精确匹配
以下条件与任何以Production/Dev开头的applicationContext匹配
为什么有这么多反斜杠?反斜杠\必须由字符串中的4个反斜杠\\\\和正则表达式中的8个反斜杠以Symfony表达式语言转义
自TYPO3 9 LTS起,作为打字脚本条件的基础
编辑2020-02:使用不同的正则表达式分隔符使TYPO3中的applicationContext条件的可读性更好:
而不是/我们可以用作正则表达式分隔符
以下是一些例子:
匹配开发应用程序上下文
匹配以生产/开发开始的applicationContext
匹配以生产/开发或生产/暂存开头的applicationContext
匹配从Production/Live开始的applicationContext
匹配从Production/Live开始的applicationContext和活动的TYPO3后端用户会话
匹配任何applicationContext,但以生产环境开头的应用程序除外
将applicationContext与值Production/Live/ClusterServer1精确匹配
在Type3 9中,您可以执行[applicationContext=Development/*]在Type3 9中,您可以执行[applicationContext=Development/*]此regexp匹配精确的字符串生产和任何以生产/开始的字符串,例如生产/暂存 匹配应用程序上下文是生产环境还是从生产环境开始/
此regexp匹配确切的字符串Production和任何以Production/开头的字符串,例如Production/Staging 匹配应用程序上下文是生产环境还是从生产环境开始/
有帮助吗?谢谢@MathiasBrodala的提示。根据您的信息,可以执行以下操作:[applicationContext matches/^Development/]当实际上下文为Development时匹配哪个/Docker使用不同的正则表达式分隔符(如下面的答案中所示)更容易。是的,听起来很合理,感谢您再次查看。是否有帮助?感谢@MathiasBrodala的提示。根据您的信息,可以执行以下操作:[applicationContext matches/^Development/]在实际上下文为Development时进行匹配/Docker使用不同的正则分隔符(如下面的答案中所示)更容易。是的,听起来很合理,感谢您再次查看。抱歉,但是在TYPO3 9 LTS中不推荐使用旧的条件样式。除此之外,如果要使用旧条件,则必须禁用旧打字脚本条件的功能标志。抱歉,在TYPO3 9 LTS中不推荐使用旧条件样式。除此之外,如果你想使用旧的条件,你必须禁用旧打字条件的功能标志。我的答案是基于TYPO3 9 LTS中的实现的有效解决方案。我想知道有什么问题。谁否决了我的回答:请留下评论。我的答案是基于TYPO3 9 LTS中的实现的有效解决方案。我想知道它出了什么问题。它不一样。我的regexp与确切的字符串生成和任何以
生产,如生产/分段。Josef的示例都没有这样做。但是在TYPO3中,不能有类似于Productions的上下文,regexp可以像Mathias的回答中那样简单。这不一样。我的regexp与确切的字符串Production和任何以Production/开头的字符串匹配,例如Production/Staging。约瑟夫的例子中没有一个能做到这一点,但是在TYPO3中,不可能有像Productions这样的上下文,regexp可以像Mathias的答案那样简单。
[applicationContext matches "/^Development/"]
[applicationContext matches '/^Production\\\\\\\\/Dev/']
[applicationContext matches "#^Development#"]
[applicationContext matches "#^Production/Dev#"]
[applicationContext matches "#^Production/(Dev|Staging)#"]
[applicationContext matches "#^Production/Live#"]
[applicationContext matches "#^Production/Live#" && getTSFE().isBackendUserLoggedIn()]
[not (applicationContext matches "#Production#")]
[applicationContext == "Production/Live/ClusterServer1"]
[applicationContext matches '#^Production(/|$)#']