gpt4 book ai didi

arrays - TYPO3 Fluid 使用第二个数组的迭代器

转载 作者:行者123 更新时间:2023-12-02 15:44:58 24 4
gpt4 key购买 nike

我目前正在开发一个 TYPO3 扩展,其中使用两个单独的数组:一个包含有关产品的文本信息 (bikes),第二个包含相应的图像 (bikesimages) >)。在前端模板中,我使用 for 循环迭代产品。

我的问题:如何使用 for 循环的迭代器 (bikeIterator) 访问第二个数组的相同索引?

<f:for each="{bikes}" as="bike" iteration="bikeIterator">               
<div class="teaser-image"><f:image src="{bikesimages.{bikeIterator}}" alt="{bike.manufacturer} {bike.type}" /></div>

这不起作用。如何正确使用迭代器?

最佳答案

{bikeIterator} 本身就是一个对象,具有多种可以使用的方法/属性。我给你举个例子。假设您有 3 辆自行车,迭代器将为您提供以下选项:

第一辆自行车:

{bikeIterator.index} = 0
{bikeIterator.cycle} = 1
{bikeIterator.isFirst} = 1
{bikeIterator.isLast} = 0
{bikeIterator.isEven} = 0
{bikeIterator.isOdd} = 1

第二辆自行车:

{bikeIterator.index} = 1
{bikeIterator.cycle} = 2
{bikeIterator.isFirst} = 0
{bikeIterator.isLast} = 0
{bikeIterator.isEven} = 1
{bikeIterator.isOdd} = 0

第三辆自行车:

{bikeIterator.index} = 2
{bikeIterator.cycle} = 3
{bikeIterator.isFirst} = 0
{bikeIterator.isLast} = 1
{bikeIterator.isEven} = 0
{bikeIterator.isOdd} = 1

TYPO3 >= 8LTS

由于 TYPO3 8LTS 流体能够进行动态变量分配。所以你可以采用这个解决方案:

<f:for each="{bikes}" as="bike" iteration="bikeIterator">               
<div class="teaser-image"><f:image src="{bikesimages.{bikeIterator.index}}" alt="{bike.manufacturer} {bike.type}" />
</div>

TYPO3 <= 7LTS

无论如何,在 TYPO3 7LTS 或更低版本中,您无法像您尝试的那样将 {bikeIterator.index} 传递给 {bikesimages} 。我建议实现您自己的 ViewHelper,它采用 {bikeIterator.index}{bikesimages} objectStorage 或数组并返回图像 src 的路径。

因此您可以在模板中写入:

<f:image src="{myNamespace:myViewHelper(index:bikeIterator.index, bikesImgaes: bikesImages)}" alt="{bike.manufacturer} {bike.type}" />

在你的 ViewHelper 中你有这样的东西:

/**  
* @param integer $index
* @param array $bikesImages
* @return string
*/
public function render($index, $bikesImages) {
return $bikesImages[$index] ?: 'path/to/dummyImage.png';
}

关于arrays - TYPO3 Fluid 使用第二个数组的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24775507/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com