我的模板中有这个:
<v:iterator.explode content="<f:format.nl2br>{artnumbers.qualitynumber.certificates}</f:format.nl2br>" glue="<br />" as="expCertificates">
如果artnumbers.qualitynumber.certificates为空,则返回字符串“array”。
这是一个错误吗?
答案 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