【发布时间】: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 标记中。