【发布时间】:2019-07-31 11:15:16
【问题描述】:
所以我们有了 a21glossary 扩展名,我们用我们自己的扩展名 a21glossary_file 进行了扩展。在我们的扩展中,我们对扩展表进行 TCA 覆盖,并添加我们的文件字段,如下所示:
$fields = array(
'tx_a21glossary_file_reference' => array(
'label' => 'Winerap',
'config' => \TYPO3\CMS\Core\Utility\ExtensionManagementUtility::getFileFieldTCAConfig(
'tx_a21glossary_file_reference',
array(
'foreign_types' => array(
\TYPO3\CMS\Core\Resource\File::FILETYPE_AUDIO => array(
'showitem' => '--palette--;;filePalette',
)
),
'maxitems' => 1,
'readOnly' => true,
'foreign_match_fields' => [
'fieldname' => 'tx_a21glossary_file_reference',
'tablenames' => 'tx_a21glossary_main',
'table_local' => 'sys_file',
]
),
'mp3'
),
),
);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTCAcolumns('tx_a21glossary_main', $fields);
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addToAllTCAtypes(
'tx_a21glossary_main', // Table name
'--palette--;Winerap;tx_a21glossary_file' // Field list to add
);
$GLOBALS['TCA']['tx_a21glossary_main']['palettes']['tx_a21glossary_file'] = array(
'showitem' => 'tx_a21glossary_file_reference'
);
Domain/Model 也被我们的新字段的 getter 和 setter 扩展。
所以我们可以转到我们的词汇表页面并添加带有 FileReference 的列表元素,可以选择和归档。
我的问题是我如何以及在哪里可以获得视图层的实际文件,因为存储在数据库中的是 0 或 1。
如果您需要任何类型的信息,请发表评论,非常感谢您的帮助。
编辑:模型
namespace xxx\A21glossaryFile\Domain\Model;
use TYPO3\CMS\Extbase\Domain\Model\FileReference;
class Glossary extends \SveWap\A21glossary\Domain\Model\Glossary
{
/**
* @var \TYPO3\CMS\Extbase\Domain\Model\FileReference
* @cascade remove
*/
protected $tx_a21glossary_file_reference = null;
/**
* @return \TYPO3\CMS\Extbase\Domain\Model\FileReference
*/
public function getTxA21glossaryFileReference(): FileReference
{
return $this->tx_a21glossary_file_reference;
}
/**
* @param \TYPO3\CMS\Extbase\Domain\Model\FileReference $tx_a21glossary_file_reference
*/
public function setTxA21glossaryFileReference(\TYPO3\CMS\Extbase\Domain\Model\FileReference $tx_a21glossary_file_reference)
{
$this->tx_a21glossary_file_reference = $tx_a21glossary_file_reference;
}
}
在我们切换到模型之前,音频文件刚刚被该片段渲染,这已经完全过时了,对吧?现在我们使用模型并将字段数据传递给模板,我们只是在模板结构中使用它。
tx_a21glossary_main {
60 = FILES
60 {
references {
table = tx_a21glossary_main
uid.data = uid
fieldName = tx_a21glossary_file_reference
}
renderObj = TEXT
renderObj {
stdWrap.data = file:current:publicUrl
stdWrap.wrap = <audio class="audio" controls><source src="|" type="audio/mpeg"/></audio>
}
}
}
【问题讨论】:
标签: extbase typo3-9.x typo3-extensions