使用 Fluid 显示 Extbase FileReference
Display Extbase FileReference with Fluid
在 extbase 扩展中,我有一个 FileReference 对象。它最初是用 extension_builder 创建的。
来自模特:
/**
* apprenticeshipDocument
*
@var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $apprenticeshipDocument = NULL;
等等
在前端,<f:debug>{institution.apprenticeshipDocument}</f:debug>
给我这个:
第一件事:originalResource
丢失。
其二:直接调用{institution.apprenticeshipDocument.uidLocal}时,值为NULL!虽然上面说是450
第三:假设我们可以得到uidLocal,对应sys_file.
中的uid
可搜索的解决方案:
<f:link.page pageUid="{f:uri.image(src:450)}" target="_blank">Text</f:link.page>
不指向 PDF 文件本身,而是指向 PDF 的渲染 GIF。
我想要做的就是在 link 中输出文件 (sys_file.identifier
) 的路径...一定有办法,不是吗?
编辑:Jost 提供的解决方案:
<f:if condition="{institution.apprenticeshipDocument}">
<li>
<f:link.page pageUid="{institution.apprenticeshipDocument.originalResource.publicUrl}" target="_blank">Text</f:link.page>
</li>
</f:if>
文件和文件引用在流体中的行为与平时略有不同:
- 它们是延迟加载的,因此
originalResource
(Extbase 文件引用)和 originalFile
(核心文件引用)值在第一次访问它们之前是 NULL
。但您可以像往常一样访问它们。
- 无法访问 extbase 文件引用的值
uidLocal
,因为它没有 getter(自 TYPO3 6.2.12 和 7.2 起)。
要获取文件的 url,请使用其 publicUrl
属性,或使用 EXT:vhs 中的 ViewHelper v:link.typolink
,如下所示:
<v:link.typolink configuration="{parameter: 'file:{uid}'}>
Linktext
</v:link.typolink>
uid
是本例中文件的id。
- 文件的许多属性(尤其是元数据属性)不会保存为普通对象属性,而是在内部保存到关联数组中,然后使用魔术 getter 获取。它们也是惰性加载的。因此,它们通常不会在变量转储中显示为单独的属性,并且可能根本没有设置或
NULL
(与上面相同)。
在 extbase 扩展中,我有一个 FileReference 对象。它最初是用 extension_builder 创建的。 来自模特:
/**
* apprenticeshipDocument
*
@var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $apprenticeshipDocument = NULL;
等等
在前端,<f:debug>{institution.apprenticeshipDocument}</f:debug>
给我这个:
第一件事:originalResource
丢失。
其二:直接调用{institution.apprenticeshipDocument.uidLocal}时,值为NULL!虽然上面说是450
第三:假设我们可以得到uidLocal,对应sys_file.
中的uid可搜索的解决方案:
<f:link.page pageUid="{f:uri.image(src:450)}" target="_blank">Text</f:link.page>
不指向 PDF 文件本身,而是指向 PDF 的渲染 GIF。
我想要做的就是在 link 中输出文件 (sys_file.identifier
) 的路径...一定有办法,不是吗?
编辑:Jost 提供的解决方案:
<f:if condition="{institution.apprenticeshipDocument}">
<li>
<f:link.page pageUid="{institution.apprenticeshipDocument.originalResource.publicUrl}" target="_blank">Text</f:link.page>
</li>
</f:if>
文件和文件引用在流体中的行为与平时略有不同:
- 它们是延迟加载的,因此
originalResource
(Extbase 文件引用)和originalFile
(核心文件引用)值在第一次访问它们之前是NULL
。但您可以像往常一样访问它们。 - 无法访问 extbase 文件引用的值
uidLocal
,因为它没有 getter(自 TYPO3 6.2.12 和 7.2 起)。 要获取文件的 url,请使用其
publicUrl
属性,或使用 EXT:vhs 中的 ViewHelperv:link.typolink
,如下所示:<v:link.typolink configuration="{parameter: 'file:{uid}'}> Linktext </v:link.typolink>
uid
是本例中文件的id。- 文件的许多属性(尤其是元数据属性)不会保存为普通对象属性,而是在内部保存到关联数组中,然后使用魔术 getter 获取。它们也是惰性加载的。因此,它们通常不会在变量转储中显示为单独的属性,并且可能根本没有设置或
NULL
(与上面相同)。