在一个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。
第三件事:假设我们能够获得对应于 sys_file 中 uid 的 uidLocal。
可搜索的解决方案:
<f:link.page pageUid="{f:uri.image(src:450)}" target="_blank">Text</f:link.page>
这里的链接指向PDF文件的渲染GIF,而不是PDF文件本身。
我想做的就是在链接中输出文件路径(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
是延迟加载的,所以它为NULL
是正确的。只需访问它即可。我相信您也可以访问它,然后使用 f:debug 查看其所有字段。其中之一将是originalFile
,它也是延迟加载的。 - JostuidLocal
不可访问的原因可能是没有相应的 getter,所以 fluid 无法读取它。我通常使用 EXT:vhs 中的v:link.typolink
ViewHelper 来链接文件,你可以像这样使用它:<v:link.typolink configuration="{parameter: 'file:{variableContainingUid}'}>Linktext</v:link.typoscript>
。或者,你可以使用{institution.apprenticeshipDocument.originalResource.publicUrl}
来获取 URL(不确定确切的名称)。 - JostpublicUrl
属性,而不是直接使用文件路径 - 在fileInterface
中有一个getter方法可以获取它。此外,还有更多可用的属性,这些属性在调试输出中看不到,主要是元数据 - 它们使用魔法getter方法访问。 - Jost