gpt4 book ai didi

typo3 - 使用 Fluid 显示 Extbase FileReference

转载 作者:行者123 更新时间:2023-12-02 04:13:53 26 4
gpt4 key购买 nike

在 extbase 扩展中,我有一个 FileReference 对象。它最初是用extension_builder 创建的。来自模型:

/**
* apprenticeshipDocument
*
@var \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
protected $apprenticeshipDocument = NULL;

等等

在前端,<f:debug>{institution.apprenticeshipDocument}</f:debug>给我这个:

Extbase Var Dump

第一件事: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。我想做的就是在链接中输出文件( sys_file.identifier )的路径...一定有办法,不是吗?

编辑:约斯特提供的解决方案:

<f:if condition="{institution.apprenticeshipDocument}">
<li>
<f:link.page pageUid="{institution.apprenticeshipDocument.originalResource.publicUrl}" target="_blank">Text</f:link.page>
</li>
</f:if>

最佳答案

文件和文件引用在流体中的行为与平常略有不同:

  1. 它们是延迟加载的,因此 originalResource(Extbase 文件引用)和 originalFile(Core 文件引用)值在首先访问它们。但您可以照常访问它们。
  2. 无法访问 extbase 文件引用的值 uidLocal,因为它没有 getter(从 TYPO3 6.2.12 和 7.2 开始)。
  3. 要获取文件的 URL,请使用其 publicUrl 属性,或使用 EXT:vhs 中的 ViewHelper v:link.typolink,如下所示:

    <v:link.typolink configuration="{parameter: 'file:{uid}'}>
    Linktext
    </v:link.typolink>

    uid 是本例中文件的 ID。

  4. 文件的许多属性(尤其是元数据属性)不会保存为普通对象属性,而是在内部保存到关联数组中,然后使用 magic getter 获取。它们也是惰性加载的。因此,它们通常不会在变量转储中显示为单独的属性,并且可能根本没有设置或NULL(与上面相同)。

关于typo3 - 使用 Fluid 显示 Extbase FileReference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29988411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com