如何定义数字数组并输出?

问题描述 投票:0回答:5

如何定义一个数字数组并在 for 循环中输出每个数字?

我尝试过这样的:

  <f:alias map="{numbers: [1,2,3,4,5,6]}">
    <f:for each="{numbers}" as="number">
      <p>{number}</p>
    </f:for>
  </f:alias>

结果:

参数“map”注册为“array”类型,但在视图助手“TYPO3\CMS\Fluid\ViewHelpers\AliasViewHelper”中为“string”类型

像这样:

  <f:alias map="{v:iterator.explode(content: '1,2,3,4,5,6')}">
      <f:for each="{content}" as="zahl">
          <p>{zahl}</p>
      </f:for>
  </f:alias>

结果: 无输出。

typo3 fluid typo3-6.2.x
5个回答
4
投票
<f:for each="{0:1, 1:2, 2:3, 3:4, 4:5, 5:6, 6:7}" as="foo">{foo}</f:for>

2
投票

理想的解决方案当且仅当:

  • 您使用 VHS。
  • 您想要从 0 或 1 开始的数字到最大值;或使用这两个起始索引计算的数字(TYPO3 8.0+ 原生支持 Fluid 中的数学表达式,早期版本需要 VHS 才能实现)。
  • 您想要循环数字,而不是将它们作为数组使用。

这似乎正是您的用例......

然后,也只有到那时,以下才是在性能和最小化复杂性方面的理想解决方案:

<v:iterator.loop count="6" iteration="iteration">
{iteration.index} starts at zero, {iteration.cycle} starts at one.
</v:iterator.loop>

也不要忘记以下几点:

{f:render(section: 'OtherSection', arguments: {iteration: iteration})
    -> v:iterator.loop(count: 6, iteration: 'iteration')}

渲染某个部分 X 次最有效的方法是什么 只有

iteration
变量不同。节或部分是表示这种确切类型的代码的最有效方式,并且 解析时内联语法是最有效的。


1
投票

试试这个:

 <f:alias map="{numbers: {1,2,3,4,5,6}}">
    <f:for each="{numbers}" as="number">
      <p>{number}</p>
    </f:for>
 </f:alias>

0
投票

我能够用这段代码解决它:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      v:schemaLocation="https://fluidtypo3.org/schemas/vhs-master.xsd">

<f:for each="{v:iterator.explode(content: '1,2,3,4,5,6')}" as="number">
   <p>{number}</p>
</f:for>

输出:

1
2
3
4
5
6
  1. 确保您已安装扩展程序
    VHS: Fluid ViewHelpers
    (扩展程序密钥 = vhs)。
  2. 确保在部分中包含扩展名。

将其写在顶部:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en"
      xmlns:v="http://typo3.org/ns/FluidTYPO3/Vhs/ViewHelpers"
      v:schemaLocation="https://fluidtypo3.org/schemas/vhs-master.xsd">

我正在使用Typo3 v6.2.25


0
投票

根据@webman的回答,我在Typo3 V11中成功尝试了以下操作:

<f:alias map="{numbers: {0:1, 1:2, 2:3, 3:4, 4:5, 5:6}}">
     <f:for each="{numbers}" as="number">
          {number}
© www.soinside.com 2019 - 2024. All rights reserved.