如果条件未能检测到图像,则流体?
Fluid if condition fails to detect image?
我正在遍历类别列表并尝试渲染图像(如果存在)。
我的问题是 IF 条件为假。如果我删除条件,它会很好地呈现图像,但如果没有图像,它会破坏网站。
<f:for each="{categories}" as="cat">
<f:if condition="{cat.image}"><f:image image="{cat.image}" /></f:if>
<span>{cat.title}</span>
</f:for>
编辑 - 解决方法:
由于此模板是第三方扩展的覆盖,我无法解决核心问题。但我想出了一个解决方法:
我可以用<f:cObject typoscriptObjectPath="lib.getCatImg" data="{img: cat.image }" />
然后我在打字稿中创建了一个基本的 FLUIDTEMPLATE
:
lib.getCatImg = FLUIDTEMPLATE
lib.getCatImg {
templateName = CatImage
templateRootPaths.10 = EXT:my_site/Resources/Private/Templates/
}
最后,在新模板中我可以使用 <f:if condition="{data.img}">
并且它按预期工作。如果有更简单的方法,请告诉我。
总的来说,代码看起来不错。
没有关于类别模型和图像的更多信息属性,以下只是一个预感。
TYPO3 v9(和TYPO3 v10)使用Fluid 2.6,有problems with the variables if the property uses a LazyLoadingProxy。
这个问题应该从 TYPO3 v11 使用 Fluid 2.7 解决。
如果我的假设是正确的,有以下解决方案:
- 删除图像模型中的 LazyLoadingProxy 属性。
- 也许不在 Fluid 中检查
{cat.image}
本身但生成图像 URL 会有所帮助 - 所以在条件中使用 {f:uri:image(image:cat.image)}
。
- 而不是 mid-term 但非常推荐:更新到 TYPO3 v11.
TYPO3 v9 LTS reached its end of free support on 30 September 2021
我正在遍历类别列表并尝试渲染图像(如果存在)。
我的问题是 IF 条件为假。如果我删除条件,它会很好地呈现图像,但如果没有图像,它会破坏网站。
<f:for each="{categories}" as="cat">
<f:if condition="{cat.image}"><f:image image="{cat.image}" /></f:if>
<span>{cat.title}</span>
</f:for>
编辑 - 解决方法:
由于此模板是第三方扩展的覆盖,我无法解决核心问题。但我想出了一个解决方法:
我可以用<f:cObject typoscriptObjectPath="lib.getCatImg" data="{img: cat.image }" />
然后我在打字稿中创建了一个基本的 FLUIDTEMPLATE
:
lib.getCatImg = FLUIDTEMPLATE
lib.getCatImg {
templateName = CatImage
templateRootPaths.10 = EXT:my_site/Resources/Private/Templates/
}
最后,在新模板中我可以使用 <f:if condition="{data.img}">
并且它按预期工作。如果有更简单的方法,请告诉我。
总的来说,代码看起来不错。
没有关于类别模型和图像的更多信息属性,以下只是一个预感。
TYPO3 v9(和TYPO3 v10)使用Fluid 2.6,有problems with the variables if the property uses a LazyLoadingProxy。
这个问题应该从 TYPO3 v11 使用 Fluid 2.7 解决。
如果我的假设是正确的,有以下解决方案:
- 删除图像模型中的 LazyLoadingProxy 属性。
- 也许不在 Fluid 中检查
{cat.image}
本身但生成图像 URL 会有所帮助 - 所以在条件中使用{f:uri:image(image:cat.image)}
。 - 而不是 mid-term 但非常推荐:更新到 TYPO3 v11.
TYPO3 v9 LTS reached its end of free support on 30 September 2021