f:uri.image 的内联符号在 typo3 8.3.0 中被破坏了吗?
Is inline notation of f:uri.image broken in typo3 8.3.0?
我使用 TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
访问 FAL 图片
dataProcessing {
20 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
20 {
references.fieldName = image
as = images
}
}
<f:uri.image image="{images.0}" />
的使用工作正常,但 {f:uri.image(image:'{images.0}')}
或 {f:uri.image(image:images.0)}
给我一个有限元错误:
#1: PHP Warning: htmlspecialchars() expects parameter 1 to be string, object given in
typo3_cms8/vendor/typo3fluid/fluid/src/Core/Parser/SyntaxTree/EscapingNode.php
line 41
信息:在 7.LTS 中代码有效
这是由两件事共同造成的:
{images.0}
变量是一个对象,没有__toString
方法
- 在提供的内联示例中,参数包装在 TextNode 中传递
要更正此问题,请避免将对象访问器包装在文本节点中:
{f:uri(image: images.0)}
有关这方面的更详细的解释,您可以观看我关于该主题的视频:Mastering Fluid - Accessing Variables。
我还应该补充一点,我们确实知道变量的这种边缘情况,这些变量与包装在 TextNode 中的字符串不兼容。到目前为止,我们的决定是,我们宁愿允许这种边缘情况通过,并避免添加需要检查 every 中的 every 变量的条件 every模板累积了数十亿个条件,其唯一目标是避免此警告。
我使用 TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
访问 FAL 图片
dataProcessing {
20 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
20 {
references.fieldName = image
as = images
}
}
<f:uri.image image="{images.0}" />
的使用工作正常,但 {f:uri.image(image:'{images.0}')}
或 {f:uri.image(image:images.0)}
给我一个有限元错误:
#1: PHP Warning: htmlspecialchars() expects parameter 1 to be string, object given in typo3_cms8/vendor/typo3fluid/fluid/src/Core/Parser/SyntaxTree/EscapingNode.php line 41
信息:在 7.LTS 中代码有效
这是由两件事共同造成的:
{images.0}
变量是一个对象,没有__toString
方法- 在提供的内联示例中,参数包装在 TextNode 中传递
要更正此问题,请避免将对象访问器包装在文本节点中:
{f:uri(image: images.0)}
有关这方面的更详细的解释,您可以观看我关于该主题的视频:Mastering Fluid - Accessing Variables。
我还应该补充一点,我们确实知道变量的这种边缘情况,这些变量与包装在 TextNode 中的字符串不兼容。到目前为止,我们的决定是,我们宁愿允许这种边缘情况通过,并避免添加需要检查 every 中的 every 变量的条件 every模板累积了数十亿个条件,其唯一目标是避免此警告。