【问题标题】:TYPO3 extbase FAL file downloadTYPO3 extbase FAL 文件下载
【发布时间】:2013-06-24 07:44:36
【问题描述】:

使用 Extbase 插件,我想显示文件下载链接。 我正在使用 TYPO3 v6.1 FAL 文件结构。 但我无法获取原始文件下载链接。

在文件 ext_tables.sql 中

CREATE TABLE tx_myext_domain_model_test (
    # ...
    files varchar(255) DEFAULT '' NOT NULL,
    # ...
);

在文件Configuration/TCA/Test.php中

$TCA['tx_myext_domain_model_test'] = array(
    // ...
    'files' => array(
        'exclude' => 1,
        'label' => 'Files',
        'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
            'files',
            array(
                'appearance' => array(
                    'createNewRelationLinkTitle' => 'LLL:EXT:cms/locallang_ttc.xlf:images.addFileReference'
                ),
            ),
            $GLOBALS['TYPO3_CONF_VARS']['GFX']['imagefile_ext']
        ),
    ),
    // ...
);

在文件 Classes/Domain/Model/Test.php 中

class Test extends \TYPO3\CMS\Extbase\DomainObject\AbstractEntity
{
    // ...
    /**
     * Files
     * @var \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference>
     */
    protected $files;

    /**
     * Returns the files
     *
     * @return \TYPO3\CMS\Extbase\Persistence\ObjectStorage<\TYPO3\CMS\Extbase\Domain\Model\FileReference> $files
     */
    public function getFiles()
    {
        return $this->files;
    }       
}

在文件 Classes/Controller/TestController.php 中

class TestController extends \TYPO3\CMS\Extbase\Mvc\Controller\ActionController
{
    // ..
    public function listAction() {
        $tests = $this->testRepository->findAll();
        $this->view->assign('tests', $tests);           
    }
    // ..
}

在文件 Resources/Private/Templates/Test/List.html

<f:for each="{tests}" as="test" iteration="itemIterator">
    <f:debug title="Debug of test">{test.files}</f:debug>
    <f:for each="{test.files}" as="file">
    <a href="{f:uri.image(src:file.uid,treatIdAsReference:1)}">
        <f:image src="{file.uid}" alt="" width='101' height="67" treatIdAsReference="1"/>
    </a>
    <p>{file.originalResource.originalFile.title}</p>
</f:for>

如果在调试中“originalResource”为 NULL。 有人知道如何在这里获取原始文件链接吗? 谢谢。

【问题讨论】:

  • 因为这是文件引用,您可能需要解析这些引用。
  • 为什么需要 originalResource 属性?你想得到文件的标题吗?原始文件链接是什么意思?
  • 您好 Shufla,我需要获取文件名和文件路径,以便可以使用 href 标签下载文件。我的意思是原始文件链接是指存储在 sys_file 表中的文件路径。所以我可以将该链接包装在 href 标记中。

标签: download typo3 extbase


【解决方案1】:

你试过了吗:

public function getFiles() {
    $result = array();
    foreach($this->files as $file) {
        $result[] = $file->getOriginalResource();
    }
    return $result;
}

完全未经测试。

【讨论】:

  • 您好 pgame,我已经尝试过您的代码,但“originalResource”数组仍然为空
  • 您确定此文件包含任何内容吗?
  • 是的。此代码给出文件的 png 图像。 显示和下载图片,没问题。但由于图像标签,pdf 也显示为 png 文件。
  • 奇怪!现在开始工作了。 {file.originalFile.name}
  • @Ganybhat 我在同一点上 - PDF 被渲染为图像。你做了什么来将他们的 URL 显示为链接?我的“originalResource”也是空的。
猜你喜欢
  • 2014-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 2015-08-05
  • 1970-01-01
  • 2012-05-28
相关资源
最近更新 更多