【问题标题】:TYPO3 - Fluid returns the string "array"TYPO3 - 流体返回字符串“数组”
【发布时间】:2013-11-29 13:52:57
【问题描述】:

我的模板中有这个:

<v:iterator.explode content="<f:format.nl2br>{artnumbers.qualitynumber.certificates}</f:format.nl2br>" glue="<br />" as="expCertificates">


如果 artnumbers.qualitynumber.certificates 为空,则返回字符串“array”。

这是一个错误吗?

【问题讨论】:

    标签: typo3 fluid


    【解决方案1】:

    v:iterator.explodeas 参数一起使用时,意味着分配给as 的变量仅在标签内容内可用:

    <v:iterator.explode content="1,2,3" as="numbers"> {numbers} is an array </v:iterator.explode> {numbers} is no longer defined.

    此行为从 VHS 1.7 更改为 1.8(根据内存)。

    或者,做:

    {artnumbers.qualitynumber.certificates -> f:format.nl2br() -> v:iterator.explode(glue: '<br />') -> v:var.set(name: 'extractedCertificates')} <f:for each="{extractedCertificates}" as="certificate"> {certificate} </f:for>

    或者更好,但假设您的行仅由一个换行符分隔:

    {artnumbers.qualitynumber.certificates -> v:iterator.explode(glue: 'constant:LF') -> v:var.set(name: 'extractedCertificates')} <f:for each="{extractedCertificates}" as="certificate"> {certificate} </f:for>

    这当然可以让您跳过nl2br 步骤。

    更加紧凑:

    <f:for each="{artnumbers.qualitynumber.certificates -> v:iterator.explode(glue: 'constant:LF')}" as="certificate"> {certificate} </f:for>

    【讨论】:

      【解决方案2】:

      您正在使用 ViewHelper。此 ViewHelper 将字符串 (!) 中的换行符替换为
      标签。您不能将它用于数组,这就是它返回“数组”的原因。

      我不知道你为什么需要爆炸视图助手。为什么不直接遍历您的证书?

      <f:for each="{artnumbers.qualitynumber.certificates}" as="certificate">
          {certificate}<br />
      </f:for>
      

      编辑:如果证书是包含换行符的字符串,则使用换行符作为爆炸的胶水:

      <v:iterator.explode content="{artnumbers.qualitynumber.certificates}" glue="\n" as="expCertificates">
      

      您也可以尝试按照 ViewHelper 文档中的建议在胶水中使用 CONSTANT:LF。

      【讨论】:

      • 我的证书写在一个文本框中,每行一个证书。因此我需要按换行符爆炸。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-27
      • 1970-01-01
      • 2019-06-13
      • 1970-01-01
      相关资源
      最近更新 更多