【问题标题】:What does this old typoscript condition do and how to I express it with Symfony Expressions?这个旧的印刷条件是做什么的,我如何用 Symfony 表达式来表达它?
【发布时间】:2019-08-04 17:57:56
【问题描述】:

我将TYPO3 (6.x) 的旧实例更新为TYPO3 9.5. 每次加载页面时,我都会在日志文件中收到投诉,例如:

[警告] 请求="bc60e12f63cf8" 组件="TYPO3.CMS.Frontend.Configuration.TypoScript.ConditionMatching.ConditionMatcher": 无法解析表达式,回退开始。它看起来像一个 旧条件,只有一个等号。 - {"表达式":"globalVar = TSFE : beUserLogin > 0"}

从第 9 版开始,TYPO 为 Typoscript 使用了一种名为 Symfony 的 nex 表达式语言。我找到了很好的文档。但是,我找不到有关旧语法的任何文档。

[globalVar = TSFE : beUserLogin > 0]
[globalVar = GP:L = 1]
[globalString = IENV:HTTP_HOST=www.domain.de]

我想“=”是 euqals 运算符,错误消息已经暗示了如何修复它。但是我不知道这些语句中的“:”是什么。我猜它是“AND”或“OR”运算符。但我不确定。对理解这些陈述的任何帮助都将极大地帮助我将它们转移到新标准。

【问题讨论】:

    标签: syntax typo3 typoscript


    【解决方案1】:

    [globalVar = TSFE : beUserLogin > 0] 用户是否在后台登录?

    [globalVar = GP:L = 1] 语言 UID 是否等于 1?

    [globalString = IENV:HTTP_HOST=www.domain.de] 环境主机是否等于www.domain.de?​​p>

    可以在与实际相同的位置找到旧的印刷文档。只需更改左列底部的版本即可。 https://docs.typo3.org/m/typo3/reference-typoscript/6.2/en-us/Conditions/Reference/Index.html

    关心这意味着您将通过以下方式获得 HTTP_HOST 之类的值 getenv() ,您将检索 GET/POST 值 TYPO3CMSCoreUtilityGeneralUtility::_GP() (t3lib_div::_GP())。最后一个 TSFE 对象中的许多值很有用。为了得到那些 用于与“globalVar”和“globalString”条件进行比较的值, 你用“IENV:”/“ENV:”,“GP:”作为变量名的前缀, “TSFE:”或“LIT:”分别。还是“|”分频器可用于 数组和/或对象中的单独键。 “LIT”的意思是“字面的”,而 “:”之后的字符串被修剪并作为值返回(没有被 除以“|”或任何东西)

    注意:强烈建议使用“IENV:”前缀来获取 与系统无关的服务器/环境变量。基本上 这将使用 TYPO3CMSCoreUtilityGeneralUtility::getIndpEnv() (t3lib_div::getIndpEnv())。使用“ENV:”,您可以获得原始输出 getenv() 在所有系统上并不总是相同的!

    【讨论】:

    • 非常感谢,您的帖子包含了我需要的所有内容以及更多内容,非常有帮助。
    猜你喜欢
    • 2014-07-13
    • 2011-10-24
    • 1970-01-01
    • 2020-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多