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模板累积了数十亿个条件,其唯一目标是避免此警告。