扩展中的文件导入
File Import in an extension
我过去常常通过 JSON 从另一个应用程序将文件导入 TYPO3。导入的文件保存在特定的存储中。关联记录在 sys_file 中创建。到目前为止一切看起来都很好。
现在我想将导入的文件添加到某个table。为此,我根据 NewsImportService.php 使用新闻扩展 V8.5.2 的方法。有一个函数 hydrateNewsRecord() 可以建立媒体(文件)关系。因此我使用以下代码:
$media = $objectManager->get(\Zhaw\ZhawContinuingEducation\Domain\Model\FileReference::class);
$media->setFileUid($file->getUid());
\ add new file to field
$newCourse->addContactImage1($media);
...
\ add to table course
$courseRepo->add($newCourse);
...
$persistenceManager->persistAll();
在测试期间我总是得到错误(由于持久性管理器):Table 'typo3_www.tx_zhawcontinuingeducation_domain_model_filereference' 不存在
我也在 domain/model FileReference.php 下添加并在 setup.typoscript 中添加:
objects {
TYPO3\CMS\Extbase\Domain\Model\FileReference.className = Zhaw\ZhawContinuingEducation\Domain\Model\FileReference
}
persistence {
storagePid =
classes {
Zhaw\ZhawContinuingEducation\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
}
}
}
}
}
table tx_zhawcontinuingeducation_domain_model_filereference 不是必需的,因为它已经存在于内核中。有人知道我错过了什么吗?
自 TYPO3 10.0 以来,不再可能像 TypoScript 中那样映射模型 类。您需要将 EXT:extension/Configuration/Extbase/Persistence/Classes.php
文件添加到您的扩展中,其中包含以下内容:
<?php
declare(strict_types = 1);
return [
\Zhaw\ZhawContinuingEducation\Domain\Model\FileReference::class => [
'tableName' => 'sys_file_reference',
'properties' => [
'originalFileIdentifier' => [
'fieldName' => 'uid_local'
],
],
],
];
我过去常常通过 JSON 从另一个应用程序将文件导入 TYPO3。导入的文件保存在特定的存储中。关联记录在 sys_file 中创建。到目前为止一切看起来都很好。 现在我想将导入的文件添加到某个table。为此,我根据 NewsImportService.php 使用新闻扩展 V8.5.2 的方法。有一个函数 hydrateNewsRecord() 可以建立媒体(文件)关系。因此我使用以下代码:
$media = $objectManager->get(\Zhaw\ZhawContinuingEducation\Domain\Model\FileReference::class);
$media->setFileUid($file->getUid());
\ add new file to field
$newCourse->addContactImage1($media);
...
\ add to table course
$courseRepo->add($newCourse);
...
$persistenceManager->persistAll();
在测试期间我总是得到错误(由于持久性管理器):Table 'typo3_www.tx_zhawcontinuingeducation_domain_model_filereference' 不存在
我也在 domain/model FileReference.php 下添加并在 setup.typoscript 中添加:
objects {
TYPO3\CMS\Extbase\Domain\Model\FileReference.className = Zhaw\ZhawContinuingEducation\Domain\Model\FileReference
}
persistence {
storagePid =
classes {
Zhaw\ZhawContinuingEducation\Domain\Model\FileReference {
mapping {
tableName = sys_file_reference
columns {
uid_local.mapOnProperty = originalFileIdentifier
}
}
}
}
}
table tx_zhawcontinuingeducation_domain_model_filereference 不是必需的,因为它已经存在于内核中。有人知道我错过了什么吗?
自 TYPO3 10.0 以来,不再可能像 TypoScript 中那样映射模型 类。您需要将 EXT:extension/Configuration/Extbase/Persistence/Classes.php
文件添加到您的扩展中,其中包含以下内容:
<?php
declare(strict_types = 1);
return [
\Zhaw\ZhawContinuingEducation\Domain\Model\FileReference::class => [
'tableName' => 'sys_file_reference',
'properties' => [
'originalFileIdentifier' => [
'fieldName' => 'uid_local'
],
],
],
];