【问题标题】:TYPO3 TypoScript Object in Fluid template as if condition not workingFluid 模板中的 TYPO3 TypoScript 对象好像条件不起作用
【发布时间】:2021-02-24 00:50:14
【问题描述】:

我在这里获取我的数据:

lib.registriernummer = COA_INT
lib.registriernummer {
  10 = TEXT
  10.data = TSFE:fe_user|user|registriernummer
  10.stdWrap.ifEmpty = empty
}

在我的流体模板中我可以使用:

{f:cObject(typoscriptObjectPath:'lib.registriernummer') -> f:format.raw()}

输出“33”。

如果我使用条件:

<f:if condition="{f:cObject(typoscriptObjectPath:'lib.registriernummer') -> f:format.raw()} == '33'">
  <f:then>
    number is correct
  </f:then>
  <f:else>
    number is not correct
  </f:else>
</f:if>

输出是 number is not correct 。这是为什么呢?

【问题讨论】:

    标签: conditional-statements typo3 typoscript


    【解决方案1】:

    你试过这些变种吗?

    <f:if condition="{f:cObject(typoscriptObjectPath:'lib.registriernummer')->f:format.raw()} == 33">
    
    <f:if condition="'{f:cObject(typoscriptObjectPath:\'lib.registriernummer\')->f:format.raw()}' == '33'">
    

    由于比较的信息不能被缓存,结果块也不能被缓存。

    要么将块放入(打字稿)视图助手中,要么使模板不被缓存。

    类似这样的:

    lib.registriernummer = COA_INT
    lib.registriernummer {
      10 = TEXT
      10.value = number is not correct
      10.override = number is correct
      10.override.if.equals.data = TSFE:fe_user|user|registriernummer
      10.override.if.value = 33
    }
    

    您可能会做的不仅仅是一些文字。 ;-)

    【讨论】:

    • 第一个永远为假,第二个永远为真。
    • 为什么要使用format.raw 查看助手?一个简单的数字或字符串不需要任何格式。
    • 问题似乎是 COA_INT-cObject。改为使用 COA 对象时,条件将匹配。不知道为什么....
    • 这可能是 TYPO3 中缓存和未缓存数据的内部处理。未缓存的数据由占位符表示并在最后一分钟被替换。也许COA_INT 刚刚提供了这个占位符,你的比较永远不可能相等
    • @Bernd: 如果没有 format.raw 视图助手,我会得到 。是的,我以前尝试过您的变体,但没有成功建立工作条件。 @Julian 和 Bernd:是的,问题在于 COA_INT-cObject,因为它将在每次页面调用时重新创建。尽管如此,这在 TYPO3 8 中有效......我只是想知道为什么以及如何解决这个问题。相关:forge.typo3.org/issues/37988
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    • 1970-01-01
    • 2013-11-12
    • 1970-01-01
    • 2013-09-25
    • 1970-01-01
    • 2020-12-07
    相关资源
    最近更新 更多