TYPO3 - Fluid返回字符串“array”

时间:2013-11-29 13:52:57

标签: typo3 fluid

我的模板中有这个:

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


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

这是一个错误吗?

2 个答案:

答案 0 :(得分:3)

v:iterator.explode参数一起使用时,

as表示分配给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>

答案 1 :(得分:1)

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

我不知道为什么你需要爆炸的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 in glue: https://fedext.net/viewhelpers/vhs/master/Iterator/ExplodeViewHelper.html