2013-06-24 9 views
2

Использование плагина Extbase, я хотел показать ссылку для скачивания файла. Я использую файловую структуру typo3 v6.1 FAL. Но я не могу получить исходную ссылку для скачивания файла.Typo3 extbase FAL file загрузить

В файле ext_tables.sql

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

В файле конфигурации/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']), 
), 
// ... 
); 

В файле классов/домена/Модель/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; 
}  
} 

В файле Классы/Контроллер/TestController.php

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

В файле ресурсов/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. Кто-нибудь знает, как получить исходную ссылку на файл здесь? Спасибо.

+0

Поскольку это ссылки на файлы, вам может потребоваться разрешение ссылок. – pgampe

+0

Зачем вам нужно свойство originalResource? Вы хотите получить название файла? Что вы имеете в виду с исходной ссылкой на файл? – Shufla

+0

Привет, Шуфла, мне нужно получить имя файла, а также путь к файлу, поэтому файл можно загрузить с помощью тега href. Я имел в виду, что исходная ссылка на файл означает путь к файлу, который хранится в таблице sys_file. Поэтому я могу обернуть эту ссылку в тег href. –

ответ

2

Вы пробовали:

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

Полностью тестировался.

+0

Привет, pgampe, я пробовал ваш код, но массив «originalResource» равен null –

+0

Вы уверены, что этот файл вообще содержит? – pgampe

+1

есть. Этот код дает png-образ файла. Для отображения и скачивания изображений, это нормально. Но pdf также можно отнести как файл png из-за тега изображения. –