我正在尝试使用Fluid将CSS代码添加到模板文件中。我想渲染上传到/fileadmin/user_upload/foo.jpg
的背景图片
但是,{images.0.url}
返回路径/fileadmin/user_upload/foo.jpg/
加上斜杠,然后当然会引发以下错误:
TYPO3Fluid \ Fluid \ Core \ ViewHelper \ Exception
提供的文件对象类型TYPO3 \ CMS \ Core \ Resource \ Folder必须是File或FileReference。
如何从路径中删除斜杠?
下面显示了相关的代码段。请注意,v:format.prepend
此处仅用于调试目的,对问题没有影响。
<f:section name="Header">
<v:page.resources.fal table="pages" field="media" uid="{page.uid}" as="images" slide="-1" >
<v:asset.style name="header">
header#header <f:format.raw>{</f:format.raw>
background-image: url(<f:uri.image src="{v:format.prepend(add: '', subject: '{images.0.url}')}" treatIdAsReference="1" />)
<f:format.raw>}</f:format.raw>
</v:asset.style>
</v:page.resources.fal>
<f:render section="Default" partial="DefaultHeader" arguments="{_all}"/>
</f:section>
答案 0 :(得分:0)
您考虑以下几点吗? 您可以删除包装的vhs ViewHelper并直接访问第一个媒体。
<v:asset.style name="header">
header#header <f:format.raw>{</f:format.raw>
background-image: url({f:uri.image(image:data.media.0})
<f:format.raw>}</f:format.raw>
</v:asset.style>
答案 1 :(得分:0)
遇到类似问题。通过使用图像的绝对URL解决了它。就我而言,它是(获取网址):
<f:variable name="mediaUrl">{f:uri.image(image: mediaObject, treatIdAsReference: 1, absolute : 1)}</f:variable>
后来使用URL作为来源:
data-src="{f:uri.image(src: mediaUrl, treatIdAsReference: 0)}"
我正在根据条件在提供的obj和静态资源uri之间切换源,因此这是必要的并且很方便。