Extbase FAL文件下载

时间:2014-06-26 13:20:15

标签: typo3 fluid extbase

我对使用Extbase和FAL下载文件有疑问。 我可以用

渲染图像
<f:image src="{file.uid}" alt="" width='100' height="100" treatIdAsReference="1"/> 

我可以获取图像,但我也有PDF文件可供下载,我无法使用此ViewHelper。 还有其他ViewHelper用于文件下载吗? 如果我转储该文件我得到这个:

file => TYPO3\CMS\Extbase\Domain\Model\FileReferenceprototypepersistent entity (uid=1342, pid=310)
         originalResource => NULL
         uid => 1342 (integer)
         _localizedUid => 1342 (integer)modified
         _languageUid => 0 (integer)modified
         pid => 310 (integer)
对于文件,

originalResource为null,对于图像,使用该ViewHelper打印图像。我无法获得档案......

欢迎任何帮助......

3 个答案:

答案 0 :(得分:13)

您可以使用originalResource的publicURL属性来创建文件链接。

Sample Fluid,用于生成域模型属性

中引用的文件列表
<ul class="download-list">
    <f:for each="{myObject.myFALproperty}" as="file" >
        <li><a href="{file.originalResource.publicUrl}">{file.originalResource.title}</a></li>
    </f:for>
</ul>

只需使用{myObject.myFAL属性}即可查看您可以访问的内容。

如果您需要更多属性,请参阅原始基础和参考,以防您想使用位于FlexForm中的覆盖

原始属性

filename :{myObject.myFALproperty.originalResource.originalFile.name}
title:{myObject.myFALproperty.originalResource.originalFile.title}
description:{myObject.myFALproperty.originalResource.originalFile.description}
alt:{myObject.myFALproperty.originalResource.originalFile.alternative}
uid:{myObject.myFALproperty.originalResource.originalFile.uid}
path:{myObject.myFALproperty.originalResource.publicUrl}

参考属性

title: {myObject.myFALproperty.originalResource.title}
description {myObject.myFALproperty.originalResource.description}

希望有所帮助。

仅供参考,这是相应的TCA的样子,但你显然已经知道了(注意这个样本的maxitems设置为10:

'myFALproperty' => array(
    'exclude' => 0,
    'label' => 'LLL:EXT:xy_sample/Resources/Private/Language/locallang_db.xlf:tx_xysample_domain_model_myobject.myFALproperty',
    'config' => 
    \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
        'myFALproperty',
        array('maxitems' => 10)
    ),
),

答案 1 :(得分:2)

步骤1/2

您可以像这样获取PDF文件的URI:

在您的FLUID模板中:

<f:uri.image src="{file.uid}" treatIdAsReference="1"/> 

OUTPUT     /路径/到/你/ PDF

即使&#34; originalResource对于文件&#34;为空,这也是有效的,就像你在问题中所述。

步骤2/2

在您的FLUID模板中创建一个链接(使用内联表示法)

<a href="{f:uri.image(src:'{file.uid}', treatIdAsReference: 1)}">
Download PDF
</a>

测试环境

  • typo3 v7.6.19

答案 2 :(得分:1)

您可以使用VHS viewhelper。 请查看以下代码:

<v:resource.file additionalAttributes="{foo: 'bar'}" data="{foo: 'bar'}" identifier="[mixed]" categories="[mixed]" treatIdAsUid="1" treatIdAsReference="1" as="NULL">
    <!-- tag content - may be ignored! -->
</v:resource.file>

链接到文档: https://fluidtypo3.org/viewhelpers/vhs/master/Resource/FileViewHelper.html

您必须安装vhs扩展名,并在模板文件中添加命名空间。

{namespace v=FluidTYPO3\Vhs\ViewHelpers}

作为最后一件事,您应该将文件索引为typo3。为此,创建一个调度程序任务,然后选择文件抽象层:在存储任务中提取元数据。