【问题标题】:Extbase FAL file downloadExtbase FAL 文件下载
【发布时间】:2014-08-17 09:01:23
【问题描述】:

我对使用 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 对于文件为空,对于图像,图像是使用该 ViewHelper 打印的。而且我无法获取文件...

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

【问题讨论】:

    标签: typo3 fluid extbase


    【解决方案1】:

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

    用于生成域模型属性中引用的文件列表的示例流体

    <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.myFALproperty} 即可查看您可以访问的内容。

    如果您需要更多属性,这里是原始的基础知识和参考,以防您想使用位于 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)
        ),
    ),
    

    【讨论】:

    • 链接:{myObject.myFALproperty.originalResource.link}
    【解决方案2】:

    步骤 1/2

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

    在您的 FLUID 模板中:

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

    输出 /path/to/your/pdf

    即使“文件的 originalResource 为空”,这也有效,就像您在问题中所说的那样。

    步骤 2/2

    在您的 FLUID 模板中创建一个链接(使用内联符号)

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

    测试环境

    • typo3 v7.6.19

    【讨论】:

    • 天哪,我真的很喜欢 wordpress。它比typo3简单得多。它实现了同样的目标......
    【解决方案3】:

    您可以为此使用 VHS 视图助手。 看看下面的代码:

    <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 索引。为此创建一个调度程序任务并选择文件抽象层:在存储任务中提取元数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-25
      • 2017-10-02
      相关资源
      最近更新 更多