TYPO3:在Extbase中从文件引用获取路径

4

我使用Fluid和Extbase(TYPO3 6.1)创建了一个自定义内容元素,其中可以定义一张图片。在图片设置中,我可以设置一个img链接,该链接指向一个文件。

在我的控制器中,我可以通过以下方式访问此数据:

$this->configurationManager->getContentObject();

但是我只获得了该设置的文件引用而没有路径,就像这样:
file:1206

我已经搜索了很多,但没有找到访问路径的解决方案。有人有解决办法或知道配置管理器中的函数或其他什么吗?我在这个问题上花了几个小时......

非常感谢!


你是否启用了FAL(文件抽象层)扩展? - Michael
3个回答

15
如果您需要从FAL获取图像,则使用以下图像视图助手。
<f:image src="{object.image_field.uid}" alt="{object.image_field.originalResource.title}" width="640" height="291" treatIdAsReference="1" />
如果你只需要图片的URL,那么可以使用下面这行代码:

{object.image.originalResource.publicUrl}..

太棒了!

10

您手头的是FAL,文件抽象层的文件引用。

首先,如果您在ActionController中使用FlexForms(或任何AbstractController的实现),您应该能够访问settings属性来计算您的FlexForm值。

要计算sys_file_reference记录,您应该参考typo3.org上的FAL文档(以及永久链接的有关文件和文件夹处理的部分)。

一般来说,您可以在\TYPO3\CMS\Extbase\Domain\Model\FileReference对象上调用getOriginalResource()。对于更具体的示例,请参阅文档链接或查看维基百科中有关处理FileReferences的示例。

如果您想通过fluid模板计算此类引用,可以在f:image上使用treatIdAsReference参数:

<f:image src="{imageObj.uid}" width="150" height="100" treatIdAsReference="1" />


2
我建议使用提供的 image 属性,而不是通过 src 属性解析 uid。因此,应该使用 <f:image image="{imageObj}" treatIdAsReference="TRUE" /> - YeppThat'sMe

3
他要求的是路径而不是图片。这会在fluid模板中输出路径:
{f:uri.image(src:'{object.uid}',treatIdAsReference:'1')}

这就是他所要求的,但并不是他实际想要实现的。有时候人们就是这样。 - j4k3
@j4k3 当然,我也是。但 Google 搜索很愚蠢,只是搜索单词。也许有人会找到那个页面,并正在寻找他所要求的东西,并想要实现他在标题中所询问的内容,就像我之前在其他地方找到答案一样,那么就没有必要再去其他地方寻找 :-) - Christian Michael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接